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;
}
}
備註
開發者應該謹慎處理透過有線傳送的資料。 你可以利用傳輸安全或訊息安全來保護這些資料。 如需詳細資訊,請參閱 安全性。
Warning
只有在你完全確定序列化的資訊是什麼時才使用 DataContractResolver 。 惡意類型可能會造成意想不到的行為。
建構函式
| 名稱 | Description |
|---|---|
| DataContractResolver() |
初始化 DataContractResolver 類別的新執行個體。 |
方法
| 名稱 | Description |
|---|---|
| Equals(Object) |
判斷指定的 物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| ResolveName(String, String, Type, DataContractResolver) |
在反序列化過程中,覆寫此方法,將指定的 |
| ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |
| TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
在序列化時,覆寫此方法,將資料合約類型映射到名稱 |