Bagikan melalui


DataContractResolver.TryResolveType Metode

Definisi

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

public:
 abstract bool TryResolveType(Type ^ type, Type ^ declaredType, System::Runtime::Serialization::DataContractResolver ^ knownTypeResolver, [Runtime::InteropServices::Out] System::Xml::XmlDictionaryString ^ % typeName, [Runtime::InteropServices::Out] System::Xml::XmlDictionaryString ^ % typeNamespace);
public abstract bool TryResolveType (Type type, Type declaredType, System.Runtime.Serialization.DataContractResolver knownTypeResolver, out System.Xml.XmlDictionaryString typeName, out System.Xml.XmlDictionaryString typeNamespace);
public abstract bool TryResolveType (Type type, Type? declaredType, System.Runtime.Serialization.DataContractResolver knownTypeResolver, out System.Xml.XmlDictionaryString? typeName, out System.Xml.XmlDictionaryString? typeNamespace);
abstract member TryResolveType : Type * Type * System.Runtime.Serialization.DataContractResolver * XmlDictionaryString * XmlDictionaryString -> bool
Public MustOverride Function TryResolveType (type As Type, declaredType As Type, knownTypeResolver As DataContractResolver, ByRef typeName As XmlDictionaryString, ByRef typeNamespace As XmlDictionaryString) As Boolean

Parameter

type
Type

Jenis yang akan dipetakan.

declaredType
Type

Jenis yang dinyatakan dalam kontrak data.

knownTypeResolver
DataContractResolver

Pemecah masalah jenis yang diketahui.

typeName
XmlDictionaryString

Nama xsi:type.

typeNamespace
XmlDictionaryString

Namespace xsi:type.

Mengembalikan

true jika pemetaan berhasil; jika tidak, false.

Contoh

Contoh berikut menunjukkan implementasi TryResolveType metode .

// 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

Jika Anda ingin menggunakan logika resolusi jenis yang diketahui di dalam implementasi Anda, referensi ke dalamnya diteruskan sebagai knownTypeResolver parameter .

Berlaku untuk