DataContractResolver Osztály

Definíció

A szerializálás és a deszerializálás során dinamikusan leképezi a típusokat a reprezentációkba és azok alapján xsi:type .

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
Öröklődés
DataContractResolver
Származtatott

Példák

Az alábbi példa bemutatja, hogyan származtathat osztályt.DataContractResolver Működő minta esetén lásd: 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;
    }
}

Megjegyzések

A fejlesztőknek óvatosnak kell lenniük azzal kapcsolatban, hogy milyen adatokat küldenek a hálózaton keresztül. Az adatok védelméhez használhatja az átvitel- vagy üzenetbiztonságot. További információkért lásd a Biztonságszakaszt.

Warning

Csak akkor használja DataContractResolver , ha teljesen biztos abban, hogy milyen információkat szerializál. A rosszindulatú típusok váratlan viselkedést okozhatnak.

Konstruktorok

Name Description
DataContractResolver()

Inicializálja a DataContractResolver osztály új példányát.

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ResolveName(String, String, Type, DataContractResolver)

Felülbírálhatja ezt a metódust, ha a megadott xsi:type nevet és névteret adatszerződés-típusra szeretné képezni a deszerializálás során.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

Felülbírálhatja ezt a metódust, ha egy adatszerződés típusát névre xsi:type és névtérre szeretné képezni a szerializálás során.

A következőre érvényes: