DataContractResolver 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
serialization 및 deserialization 중 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) |
deserialization 중에 이 메서드를 재정의하여 지정된 |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString) |
이 메서드를 재정의하여 serialization 중에 데이터 계약 형식을 |
적용 대상
.NET