DataContractResolver Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona un mecanismo para asignar dinámicamente los tipos entre las representaciones xsi:type
durante la serialización y la deserialización.
public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
- Herencia
-
DataContractResolver
- Derivado
Ejemplos
El ejemplo siguiente muestra cómo derivar una clase de DataContractResolver. Para obtener un ejemplo de trabajo, 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;
}
}
Comentarios
Los desarrolladores deben tener cuidado sobre qué datos se envían a través de la conexión. Puede usar la seguridad del transporte o del mensaje para proteger esos datos. Para obtener más información, consulte Seguridad.
Advertencia
DataContractResolver Use solo si está completamente seguro de qué información se está serializando. Los tipos malintencionados pueden provocar un comportamiento inesperado.
Constructores
DataContractResolver() |
Inicializa una nueva instancia de la clase DataContractResolver. |
Métodos
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ResolveName(String, String, Type, DataContractResolver) |
Invalide este método para asignar el nombre y el espacio de nombres |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
Invalide este método para asignar un tipo de contrato de datos a un nombre y un espacio de nombres |