DataContractResolver Classe

Definição

Fornece um mecanismo para mapear dinamicamente tipos de xsi:type e para representações durante a serialização e desserialização.

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
Herança
DataContractResolver
Derivado

Exemplos

O exemplo a seguir mostra como derivar uma classe de DataContractResolver. Para obter um exemplo de trabalho, consulte DataContractResolver.

class MyDataContractResolver : DataContractResolver
{
    private Dictionary<string, XmlDictionaryString> dictionary = new Dictionary<string, XmlDictionaryString>();
    Assembly assembly;

    // Definition of the DataContractResolver
    public MyDataContractResolver(Assembly assembly)
    {
        this.assembly = assembly;
    }

    // Used at deserialization
    // Allows users to map xsi:type name to any Type
    public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
    {
        XmlDictionaryString tName;
        XmlDictionaryString tNamespace;
        if (dictionary.TryGetValue(typeName, out tName) && dictionary.TryGetValue(typeNamespace, out tNamespace))
        {
            return this.assembly.GetType(tNamespace.Value + "." + tName.Value);
        }
        else
        {
            return null;
        }
    }
    // 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

Os desenvolvedores devem ter cuidado com quais dados estão sendo enviados pela transmissão. Você pode usar a segurança de transporte ou mensagem para proteger esses dados. Para obter mais informações, consulte Segurança.

Aviso

DataContractResolver Use somente se você tiver certeza completa de quais informações estão sendo serializadas. Tipos mal-intencionados podem causar um comportamento inesperado.

Construtores

Nome Description
DataContractResolver()

Inicializa uma nova instância da classe DataContractResolver.

Métodos

Nome Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ResolveName(String, String, Type, DataContractResolver)

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

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

Aplica-se a