次の方法で共有


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

注釈

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

警告

シリアル化される情報が完全に確実である場合にのみ使用 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 名と名前空間にマップします。

適用対象