JavaScriptSerializer.ConvertToType Метод

Определение

Перегрузки

ConvertToType(Object, Type)

Преобразует указанный объект в заданный тип.

ConvertToType<T>(Object)

Приводит заданный объект к указанному типу.

ConvertToType(Object, Type)

Преобразует указанный объект в заданный тип.

public:
 System::Object ^ ConvertToType(System::Object ^ obj, Type ^ targetType);
public object ConvertToType (object obj, Type targetType);
member this.ConvertToType : obj * Type -> obj
Public Function ConvertToType (obj As Object, targetType As Type) As Object

Параметры

obj
Object

Преобразуемый объект.

targetType
Type

Тип, в который требуется преобразовать объект.

Возвращаемое значение

Object

Сериализованная строка формата JSON.

Исключения

Результирующая строка формата JSON превышает значение свойства MaxJsonLength.

-или- Параметр obj содержит циклическую ссылку. Циклическая ссылка возникает, если дочерний объект ссылается на родительский объект, а родительский объект ссылается на дочерний.

Превышено ограничение на рекурсию, заданное свойством RecursionLimit.

Комментарии

JavaScriptSerializer При сериализации экземпляра типа, для которого зарегистрирован пользовательский преобразователь, сериализатор вызывает Serialize метод для получения словаря пар "имя-значение", которые будут преобразованы в строку в формате JSON.

Метод Serialize также может вызывать исключения, если граф объектов слишком сложный или зарегистрированные экземпляры JavaScriptConverter вызвали рекурсию преобразователя.

Применяется к

ConvertToType<T>(Object)

Приводит заданный объект к указанному типу.

public:
generic <typename T>
 T ConvertToType(System::Object ^ obj);
public T ConvertToType<T> (object obj);
member this.ConvertToType : obj -> 'T
Public Function ConvertToType(Of T) (obj As Object) As T

Параметры типа

T

Тип, которому будет приведен объект obj.

Параметры

obj
Object

Преобразуемый объект.

Возвращаемое значение

T

Объект, приведенный к целевому типу.

Исключения

Параметр obj (или вложенный член параметра obj) содержит свойство __type, которым обозначается пользовательский тип, однако связанному с сериализатором распознавателю типов не удалось найти соответствующий управляемый тип.

-или- Параметр obj (или вложенный член параметра obj) содержит свойство __type, которым обозначается пользовательский тип, однако результат десериализации соответствующей строки формата JSON не может быть назначен ожидаемому целевому типу.

-или- Параметр obj (или вложенный член параметра obj) содержит свойство __type, которым обозначается объект Object или тип, не поддерживающий создание экземпляров (например, абстрактный тип или интерфейс).

-или- Предпринята попытка приведения параметра obj к управляемому типу, относящемуся к классу массивов, использование которого как целевого типа десериализации не поддерживается.

-или- Не удается привести параметр obj к типу T.

Параметр obj является типом словаря и при этом обнаружено значение ключа не строчного типа.

-или- Параметр obj содержит определения членов, которые недоступны для типа T.

Примеры

В следующем примере показано, как использовать ConvertToType метод для получения ListItem объекта из значения в словаре, передаваемого преобразователю. Этот пример входит в состав более крупного примера использования класса JavaScriptSerializer.

ArrayList itemsList = (ArrayList)dictionary["List"];
for (int i=0; i<itemsList.Count; i++)
    list.Add(serializer.ConvertToType<ListItem>(itemsList[i]));
Dim itemsList As ArrayList = CType(dictionary("List"), ArrayList)
Dim i As Integer
For i = 0 To itemsList.Count - 1
    list.Add(serializer.ConvertToType(Of ListItem)(itemsList(i)))
Next i

Комментарии

Метод ConvertToType пытается преобразовать экземпляр объекта, представленный obj в экземпляр типа T. Во время этого преобразования не гарантируется, что равенство ссылок на объекты поддерживается. Поэтому нельзя предположить, что obj и T ссылаться на тот же объект.

ConvertToType предназначен для использования при реализации класса, наследуемого от JavaScriptConverter. Код преобразователя должен иметь возможность принимать значение, которое находится в словаре, который сериализатор передает в него, а затем преобразовать это значение в экземпляр типа T. Вместо повторной реализации пользовательского кода преобразования для выполнения этой задачи можно вызвать ConvertToType метод из кода преобразователя.

Применяется к