DataContractResolver.TryResolveType Methode

Definition

Überschreiben diese Methode, um einem xsi:type-Name und -Namespace bei der Serialisierung einen Datenvertragstyp zuzuordnen.

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

Parameter

type
Type

Der zuzuordnende Typ.

declaredType
Type

Der im Datenvertrag deklarierte Typ.

knownTypeResolver
DataContractResolver

Der Resolver des bekannten Typs.

typeName
XmlDictionaryString

Der xsi:type-Name.

typeNamespace
XmlDictionaryString

Der xsi:type-Namespace.

Gibt zurück

true, wenn die Zuordnung erfolgreich war, andernfalls false.

Beispiele

Im folgenden Beispiel wird eine Implementierung der TryResolveType-Methode veranschaulicht.

// 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;
}

Hinweise

Wenn Sie die Logik zur Auflösung bekannter Typen in der Implementierung verwenden möchten, wird ein Verweis darauf als knownTypeResolver-Parameter übergeben.

Gilt für: