DataContractResolver Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A szerializálás és a deszerializálás során dinamikusan leképezi a típusokat a reprezentációkba és azok alapján xsi:type .
public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
- Öröklődés
-
DataContractResolver
- Származtatott
Példák
Az alábbi példa bemutatja, hogyan származtathat osztályt.DataContractResolver Működő minta esetén lásd: 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;
}
}
Megjegyzések
A fejlesztőknek óvatosnak kell lenniük azzal kapcsolatban, hogy milyen adatokat küldenek a hálózaton keresztül. Az adatok védelméhez használhatja az átvitel- vagy üzenetbiztonságot. További információkért lásd a Biztonságszakaszt.
Warning
Csak akkor használja DataContractResolver , ha teljesen biztos abban, hogy milyen információkat szerializál. A rosszindulatú típusok váratlan viselkedést okozhatnak.
Konstruktorok
| Name | Description |
|---|---|
| DataContractResolver() |
Inicializálja a DataContractResolver osztály új példányát. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ResolveName(String, String, Type, DataContractResolver) |
Felülbírálhatja ezt a metódust, ha a megadott |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
Felülbírálhatja ezt a metódust, ha egy adatszerződés típusát névre |