DataContractResolver Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
| 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 |