DataContractResolver Classe

Définition

Fournit un mécanisme permettant de mapper dynamiquement des types vers et depuis xsi:type des représentations 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 de travail, 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 via le réseau. Vous pouvez utiliser le transport ou la sécurité des messages pour sécuriser ces données. Pour plus d’informations, voir la section Sécurité.

Warning

DataContractResolver Utilisez uniquement si vous êtes complètement sûr de quelles informations sont sérialisées. Les types malveillants peuvent provoquer un comportement inattendu.

Constructeurs

Nom Description
DataContractResolver()

Initialise une nouvelle instance de la classe DataContractResolver.

Méthodes

Nom Description
Equals(Object)

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

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

Remplacez cette méthode pour mapper le nom et l’espace de noms spécifiés xsi:type à un type de contrat de données lors de 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 xsi:type espace de noms pendant la sérialisation.

S’applique à