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) |
覆寫這個方法,以便在序列化期間,將資料合約型別對應至 |