DataContractResolver Klas

Definitie

Biedt een mechanisme voor het dynamisch toewijzen van typen aan en van xsi:type representaties tijdens serialisatie en deserialisatie.

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
Overname
DataContractResolver
Afgeleid

Voorbeelden

In het volgende voorbeeld ziet u hoe u een klasse kunt afleiden van DataContractResolver. Zie DataContractResolver voor een werkend voorbeeld.

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;
    }
}

Opmerkingen

Ontwikkelaars moeten voorzichtig zijn met de gegevens die via de kabel worden verzonden. U kunt transport- of berichtbeveiliging gebruiken om die gegevens te beveiligen. Zie Securityvoor meer informatie.

Waarschuwing

DataContractResolver Gebruik alleen als u volledig zeker weet welke informatie wordt geserialiseerd. Schadelijke typen kunnen onverwacht gedrag veroorzaken.

Constructors

Name Description
DataContractResolver()

Initialiseert een nieuw exemplaar van de DataContractResolver klasse.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ResolveName(String, String, Type, DataContractResolver)

Overschrijf deze methode om de opgegeven xsi:type naam en naamruimte toe te wijzen aan een gegevenscontracttype tijdens deserialisatie.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

Overschrijf deze methode om een gegevenscontracttype toe te wijzen aan een xsi:type naam en naamruimte tijdens de serialisatie.

Van toepassing op