DataContractResolver.ResolveName Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Переопределение этого метода, чтобы во время десериализации сопоставить указанное имя xsi:type
и пространство имен с типом контракта данных.
public:
abstract Type ^ ResolveName(System::String ^ typeName, System::String ^ typeNamespace, Type ^ declaredType, System::Runtime::Serialization::DataContractResolver ^ knownTypeResolver);
public abstract Type ResolveName (string typeName, string typeNamespace, Type declaredType, System.Runtime.Serialization.DataContractResolver knownTypeResolver);
public abstract Type? ResolveName (string typeName, string? typeNamespace, Type? declaredType, System.Runtime.Serialization.DataContractResolver knownTypeResolver);
abstract member ResolveName : string * string * Type * System.Runtime.Serialization.DataContractResolver -> Type
Public MustOverride Function ResolveName (typeName As String, typeNamespace As String, declaredType As Type, knownTypeResolver As DataContractResolver) As Type
Параметры
- typeName
- String
Имя xsi:type
для сопоставления.
- typeNamespace
- String
Пространство имен xsi:type
для сопоставления.
- declaredType
- Type
Тип данных объявлен в контракте данных.
- knownTypeResolver
- DataContractResolver
Известный арбитр типов.
Возвращаемое значение
Тип, с которым сопоставляются имя и пространство имен xsi:type
.
Примеры
В следующем примере показана реализация метода ResolveName.
// Used at deserialization
// Allows users to map xsi:type name to any Type
public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
{
XmlDictionaryString tName;
XmlDictionaryString tNamespace;
if (dictionary.TryGetValue(typeName, out tName) && dictionary.TryGetValue(typeNamespace, out tNamespace))
{
return this.assembly.GetType(tNamespace.Value + "." + tName.Value);
}
else
{
return null;
}
}
Комментарии
Если нужно использовать в реализации логику известного разрешения типов, ссылка на него передается в параметре knownTypeResolver
.