DataContractResolver.TryResolveType Yöntem

Tanım

Serileştirme sırasında bir veri sözleşmesi türünü bir xsi:type ad ve ad alanıyla eşlemek için bu yöntemi geçersiz kılın.

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

Parametreler

type
Type

Eşlenecek tür.

declaredType
Type

Veri sözleşmesinde bildirilen tür.

knownTypeResolver
DataContractResolver

Bilinen tür çözümleyici.

typeName
XmlDictionaryString

xsi:type adı.

typeNamespace
XmlDictionaryString

xsi:type ad alanı.

Döndürülenler

true eşleme başarılı olursa; aksi takdirde , false.

Örnekler

Aşağıdaki örnekte yönteminin bir uygulaması gösterilmektedir TryResolveType .

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

Açıklamalar

Uygulamanızın içinde bilinen tür çözümleme mantığını kullanmak istiyorsanız, parametre olarak knownTypeResolver buna bir başvuru geçirilir.

Şunlara uygulanır