DataContractResolver Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
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 |