DataContractResolver Třída

Definice

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 xsi:type názvu a oboru názvů na datový typ kontraktu během deserializace.

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 xsi:type na název a obor názvů během serializace.

Platí pro