Compartilhar via


DataContractResolver.TryResolveType Método

Definição

Substitua este método para mapear um tipo de contrato de dados para um nome e namespace xsi:type durante a serialização.

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

O tipo a ser mapeado.

declaredType
Type

O tipo declarado no contrato de dados.

knownTypeResolver
DataContractResolver

O resolvedor de tipo conhecido.

typeName
XmlDictionaryString

O nome xsi:type.

typeNamespace
XmlDictionaryString

O namespace xsi:type.

Retornos

true se o mapeamento tiver sido bem sucedido, caso contrário, false.

Exemplos

O exemplo a seguir mostra uma implementação do 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;
}

Comentários

Se você quiser usar a lógica de resolução de tipo conhecida dentro de sua implementação, uma referência a ela será passada como o knownTypeResolver parâmetro .

Aplica-se a