Comparteix a través de


DataContractResolver.TryResolveType Método

Definición

Invalide este método para asignar un tipo de contrato de datos a un nombre y un espacio de nombres xsi:type 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);
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

Resolución de tipos conocidos.

typeName
XmlDictionaryString

Nombre xsi:type.

typeNamespace
XmlDictionaryString

Espacio de nombres xsi:type.

Devoluciones

Es true si la asignación se realizó correctamente; en caso contrario, es false.

Ejemplos

En el siguiente ejemplo se muestra una implementación del método 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;
}

Comentarios

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

Se aplica a