DataContractResolver Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 |
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 |