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 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. Funkční 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 být opatrní ohledně toho, jaká data se odesílají prostřednictvím přenosu. K zabezpečení dat můžete použít zabezpečení přenosu nebo zpráv. Další informace najdete v tématu Zabezpečení.
Upozornění
Používejte DataContractResolver pouze v případě, že jste si zcela jistí, jaké informace jsou serializovány. Škodlivé typy můžou způsobit neočekávané chování.
Konstruktory
DataContractResolver() |
Inicializuje novou instanci DataContractResolver třídy. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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 mapovat typ kontraktu dat na |