Bagikan melalui


DataContractResolver Kelas

Definisi

Menyediakan mekanisme untuk memetakan jenis secara dinamis ke dan dari xsi:type representasi selama serialisasi dan deserialisasi.

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
Warisan
DataContractResolver
Turunan

Contoh

Contoh berikut menunjukkan cara mendapatkan kelas dari DataContractResolver. Untuk sampel yang berfungsi, lihat 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;
    }
}

Keterangan

Pengembang harus berhati-hati tentang data apa yang dikirim melalui kabel. Anda dapat menggunakan keamanan transportasi atau pesan untuk mengamankan data tersebut. Untuk informasi selengkapnya, lihat Keamanan.

Peringatan

Hanya gunakan DataContractResolver jika Anda benar-benar yakin dengan informasi apa yang sedang diserialisasikan. Jenis berbahaya dapat menyebabkan perilaku yang tidak terduga.

Konstruktor

DataContractResolver()

Menginisialisasi instans baru kelas DataContractResolver.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ResolveName(String, String, Type, DataContractResolver)

Ambil alih metode ini untuk memetakan nama dan namespace yang ditentukan xsi:type ke jenis kontrak data selama deserialisasi.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

Ambil alih metode ini untuk memetakan jenis kontrak data ke xsi:type nama dan namespace selama serialisasi.

Berlaku untuk