Partager via


DataContractResolver Classe

Définition

Fournit un mécanisme pour mapper dynamiquement des types vers et à partir de représentations xsi:type pendant la sérialisation et la désérialisation.

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
Héritage
DataContractResolver
Dérivé

Exemples

L'exemple suivant montre comment dériver une classe à partir de DataContractResolver. Pour obtenir un exemple fonctionnel, consultez 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;
    }
}

Remarques

Les développeurs doivent faire attention aux données envoyées sur le réseau. Vous pouvez utiliser la sécurité du transport ou des messages pour sécuriser ces données. Pour plus d’informations, consultez Sécurité.

Avertissement

DataContractResolver Utilisez uniquement si vous êtes entièrement sûr des informations en cours de sérialisation. Les types malveillants peuvent entraîner un comportement inattendu.

Constructeurs

DataContractResolver()

Initialise une nouvelle instance de la classe DataContractResolver.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ResolveName(String, String, Type, DataContractResolver)

Remplacez cette méthode pour mapper le nom et l'espace de noms xsi:type spécifiés à un type de contrat de données pendant la désérialisation.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

Remplacez cette méthode pour mapper un type de contrat de données à un nom et un espace de noms xsi:type pendant la sérialisation.

S’applique à