DataContractResolver.TryResolveType Método

Definición

Invalide este método para asignar un tipo de contrato de datos a un xsi:type nombre y un espacio de nombres durante la serialización.

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

Parámetros

type
Type

Tipo que se va a asignar.

declaredType
Type

Tipo declarado en el contrato de datos.

knownTypeResolver
DataContractResolver

Solucionador de tipos conocido.

typeName
XmlDictionaryString

Nombre xsi:type.

typeNamespace
XmlDictionaryString

Espacio de nombres xsi:type.

Devoluciones

true si la asignación se realizó correctamente; de lo contrario, false.

Ejemplos

En el ejemplo siguiente se muestra una implementación del TryResolveType método .

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

Comentarios

Si desea usar la lógica de resolución de tipos conocida dentro de la implementación, se pasa una referencia a ella como parámetro knownTypeResolver .

Se aplica a