DataContractResolver Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Serileştirme ve seri durumdan xsi:type
çıkarma sırasında gösterimlere türleri dinamik olarak eşlemek için bir mekanizma sağlar.
public ref class DataContractResolver abstract
public abstract class DataContractResolver
type DataContractResolver = class
Public MustInherit Class DataContractResolver
- Devralma
-
DataContractResolver
- Türetilmiş
Örnekler
Aşağıdaki örnek, öğesinden DataContractResolverbir sınıfın nasıl türetilmiş olduğunu gösterir. Çalışan bir örnek için bkz. 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;
}
}
Açıklamalar
Geliştiriciler, kablo üzerinden hangi verilerin gönderildiği konusunda dikkatli olmalıdır. Bu verilerin güvenliğini sağlamak için aktarım veya ileti güvenliğini kullanabilirsiniz. Daha fazla bilgi için bkz . Güvenlik.
Uyarı
Yalnızca hangi bilgilerin seri hale getirildiğinden tamamen eminseniz kullanın DataContractResolver . Kötü amaçlı türler beklenmeyen davranışlara neden olabilir.
Oluşturucular
DataContractResolver() |
DataContractResolver sınıfının yeni bir örneğini başlatır. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ResolveName(String, String, Type, DataContractResolver) |
Seri durumdan çıkarma sırasında belirtilen |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
Serileştirme sırasında bir veri sözleşmesi türünü bir |