DataContractResolver.TryResolveType Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.