DataContractResolver クラス

定義

シリアル化と逆シリアル化の間に、 xsi:type 表現との間で型を動的にマッピングするためのメカニズムを提供します。

public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
継承
DataContractResolver
派生

次の例は、 DataContractResolverからクラスを派生させる方法を示しています。 作業中のサンプルについては、 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;
    }
}

注釈

開発者は、ネットワーク経由で送信されるデータに注意する必要があります。 トランスポートまたはメッセージのセキュリティを使用して、そのデータをセキュリティで保護できます。 詳細については、「セキュリティ」を参照してください。

Warning

シリアル化される情報が完全に確実である場合にのみ、 DataContractResolver を使用します。 悪意のある種類は、予期しない動作を引き起こす可能性があります。

コンストラクター

名前 説明
DataContractResolver()

DataContractResolver クラスの新しいインスタンスを初期化します。

メソッド

名前 説明
Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ResolveName(String, String, Type, DataContractResolver)

逆シリアル化中に指定した xsi:type 名と名前空間をデータ コントラクト型にマップするには、このメソッドをオーバーライドします。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

シリアル化中にデータ コントラクト型を xsi:type 名と名前空間にマップするには、このメソッドをオーバーライドします。

適用対象