DataContractResolver Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje mechanismus pro dynamické mapování typů na reprezentaci a z xsi:type reprezentací během serializace a deserializace.
public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
- Dědičnost
-
DataContractResolver
- Odvozené
Příklady
Následující příklad ukazuje, jak odvodit třídu z DataContractResolver. Pracovní ukázku najdete v tématu 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;
}
}
Poznámky
Vývojáři by měli dávat pozor na to, jaká data se přes drát odesílají. K zabezpečení dat můžete použít zabezpečení přenosu nebo zpráv. Další informace naleznete v tématu Zabezpečení.
Warning
Použijte DataContractResolver pouze v případě, že jste si zcela jisti, jaké informace jsou serializovány. Škodlivé typy můžou způsobit neočekávané chování.
Konstruktory
| Name | Description |
|---|---|
| DataContractResolver() |
Inicializuje novou instanci DataContractResolver třídy. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ResolveName(String, String, Type, DataContractResolver) |
Přepište tuto metodu pro mapování zadaného |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
Přepsat tuto metodu mapování datového typu kontraktu |