DataContractResolver クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
シリアル化および逆シリアル化の際に型と 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) |
このメソッドをオーバーライドして、逆シリアル化中に指定された |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
このメソッドをオーバーライドして、シリアル化中にデータ コントラクト型を |
適用対象
.NET