Udostępnij za pośrednictwem


DataContractResolver.TryResolveType Metoda

Definicja

Zastąpij tę metodę, aby zamapować typ kontraktu danych na xsi:type nazwę i przestrzeń nazw podczas serializacji.

public:
 abstract bool TryResolveType(Type ^ type, Type ^ declaredType, System::Runtime::Serialization::DataContractResolver ^ knownTypeResolver, [Runtime::InteropServices::Out] System::Xml::XmlDictionaryString ^ % typeName, [Runtime::InteropServices::Out] System::Xml::XmlDictionaryString ^ % typeNamespace);
public abstract bool TryResolveType (Type type, Type declaredType, System.Runtime.Serialization.DataContractResolver knownTypeResolver, out System.Xml.XmlDictionaryString typeName, out System.Xml.XmlDictionaryString typeNamespace);
public abstract bool TryResolveType (Type type, Type? declaredType, System.Runtime.Serialization.DataContractResolver knownTypeResolver, out System.Xml.XmlDictionaryString? typeName, out System.Xml.XmlDictionaryString? typeNamespace);
abstract member TryResolveType : Type * Type * System.Runtime.Serialization.DataContractResolver * XmlDictionaryString * XmlDictionaryString -> bool
Public MustOverride Function TryResolveType (type As Type, declaredType As Type, knownTypeResolver As DataContractResolver, ByRef typeName As XmlDictionaryString, ByRef typeNamespace As XmlDictionaryString) As Boolean

Parametry

type
Type

Typ do mapowania.

declaredType
Type

Typ zadeklarowany w kontrakcie danych.

knownTypeResolver
DataContractResolver

Znany rozpoznawanie typów.

typeName
XmlDictionaryString

Nazwa xsi:type.

typeNamespace
XmlDictionaryString

Przestrzeń nazw xsi:type.

Zwraca

true jeśli mapowanie powiodło się; w przeciwnym razie , false.

Przykłady

W poniższym przykładzie przedstawiono implementację TryResolveType metody .

// Used at serialization
// Maps any Type to a new xsi:type representation
public override bool TryResolveType(Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace)
{
    string name = type.Name;
    string namesp = type.Namespace;
    typeName = new XmlDictionaryString(XmlDictionary.Empty, name, 0);
    typeNamespace = new XmlDictionaryString(XmlDictionary.Empty, namesp, 0);
    if (!dictionary.ContainsKey(type.Name))
    {
        dictionary.Add(name, typeName);
    }
    if (!dictionary.ContainsKey(type.Namespace))
    {
        dictionary.Add(namesp, typeNamespace);
    }
    return true;
}

Uwagi

Jeśli chcesz użyć znanej logiki rozpoznawania typów wewnątrz implementacji, odwołanie do niego jest przekazywane jako knownTypeResolver parametr.

Dotyczy