Condividi tramite


DataContractResolver.TryResolveType Metodo

Definizione

Eseguire l'override di questo metodo per eseguire il mapping di un tipo di contratto dati al nome e allo spazio dei nomi di xsi:type durante la serializzazione.

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

Parametri

type
Type

Tipo di cui eseguire il mapping.

declaredType
Type

Tipo dichiarato nel contratto dati.

knownTypeResolver
DataContractResolver

Resolver di tipi conosciuti.

typeName
XmlDictionaryString

Nome di xsi:type.

typeNamespace
XmlDictionaryString

Spazio dei nomi di xsi:type.

Restituisce

true se il mapping viene eseguito correttamente. In caso contrario, false.

Esempio

Nel codice seguente viene illustrata un'implementazione del metodo TryResolveType.

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

Commenti

Se si desidera utilizzare la logica di risoluzione del tipo conosciuto nell'implementazione, passare il relativo riferimento come parametro knownTypeResolver.

Si applica a