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
Тип для преобразования объекта в.
Возвращаемое значение
Сериализованная строка JSON.
Исключения
Итоговая строка в формате JSON превышает значение MaxJsonLength.
–или–
obj содержит циклическую ссылку. Циклическая ссылка возникает, когда дочерний объект имеет ссылку на родительский объект, а родительский объект имеет ссылку на дочерний объект.
Превышено ограничение рекурсии, определенное RecursionLimit .
Комментарии
JavaScriptSerializer При сериализации типа, для которого зарегистрирован пользовательский преобразователь, сериализатор вызывает Serialize метод для получения словаря пар name/value, которые будут преобразованы в строку в формате 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
Объект для преобразования.
Возвращаемое значение
Объект, преобразованный в целевой тип.
Исключения
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 метод из кода преобразователя.