Partilhar via


DataContractResolver Classe

Definição

Fornece um mecanismo para mapear dinamicamente os tipos de e para representações de xsi:type 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 saber mais, 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

DataContractResolver()

Inicializa uma nova instância da classe DataContractResolver.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

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

Substituir este método para mapear o nome xsi:type mapeado e o namespace 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 este método para mapear um tipo de contrato de dados para um nome e namespace xsi:type durante a serialização.

Aplica-se a