DataContractResolver Klasa

Definicja

Zapewnia mechanizm do dynamicznego mapowania typów do i z xsi:type reprezentacji podczas serializacji i deserializacji.Provides a mechanism for dynamically mapping types to and from xsi:type representations during serialization and deserialization.

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
Dziedziczenie
DataContractResolver
Pochodne

Przykłady

Poniższy przykład pokazuje, jak utworzyć klasę z DataContractResolver .The following example shows how to derive a class from DataContractResolver. Aby zapoznać się z przykładem roboczym, zobacz obiektu DataContractResolver.For a working sample, see 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;
    }
}

Uwagi

Deweloperzy powinni mieć ostrożność, jakie dane są przesyłane przez sieć.Developers should be careful about what data is being sent over the wire. Aby zabezpieczyć te dane, można użyć transportu lub zabezpieczeń komunikatów.You can use transport or message security to secure that data. Aby uzyskać więcej informacji, zobacz zabezpieczenia.For more information, see Security.

Ostrzeżenie

Należy używać tylko DataContractResolver wtedy, gdy masz pewność, jakie informacje są serializowane.Only use DataContractResolver if you are completely sure of what information is being serialized. Złośliwe typy mogą spowodować nieoczekiwane zachowanie.Malicious types can cause unexpected behavior.

Konstruktory

DataContractResolver()

Inicjuje nowe wystąpienie klasy DataContractResolver.Initializes a new instance of the DataContractResolver class.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ResolveName(String, String, Type, DataContractResolver)

Zastąp tę metodę, aby zamapować określoną xsi:type nazwę i przestrzeń nazw na typ kontraktu danych podczas deserializacji.Override this method to map the specified xsi:type name and namespace to a data contract type during deserialization.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

Zastąp tę metodę, aby zamapować typ kontraktu danych na xsi:type nazwę i przestrzeń nazw podczas serializacji.Override this method to map a data contract type to an xsi:type name and namespace during serialization.

Dotyczy