DataContractResolver.TryResolveType Metodo

Definizione

Eseguire l'override di questo metodo per eseguire il mapping di un tipo di contratto dati a un xsi:type nome e uno spazio dei nomi 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);
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

Sistema di risoluzione dei tipi noto.

typeName
XmlDictionaryString

Nome xsi:type.

typeNamespace
XmlDictionaryString

Spazio dei nomi xsi:type.

Valori restituiti

true se il mapping è riuscito; in caso contrario, false.

Esempio

Nell'esempio seguente viene illustrata un'implementazione del TryResolveType metodo .

// 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 vuole usare la logica di risoluzione dei tipi nota all'interno dell'implementazione, viene passato un riferimento come knownTypeResolver parametro.

Si applica a