DataContractResolver Classe

Definição

Fornece um mecanismo para mapear dinamicamente tipos para e a partir xsi:type de 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 seguinte mostra como derivar uma classe a partir de DataContractResolver. Para uma amostra de trabalho, veja 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;
    }
}

Observações

Os programadores devem ter cuidado com os dados que são enviados pelo fio. Pode usar segurança de transporte ou mensagens para proteger esses dados. Para obter mais informações, consulte Security.

Warning

Só use DataContractResolver se tiver a certeza absoluta de que informação está a ser serializada. Tipos maliciosos podem causar comportamentos inesperados.

Construtores

Name Description
DataContractResolver()

Inicializa uma nova instância da DataContractResolver classe.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

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

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

ToString()

Devolve uma cadeia que representa o objeto atual.

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

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

Aplica-se a