DataContractResolver 클래스

정의

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;
    }
}

설명

개발자는 유선으로 전송되는 데이터에 주의해야 합니다. 전송 또는 메시지 보안을 사용하여 해당 데이터를 보호할 수 있습니다. 자세한 내용은 보안을 참조하세요.

Warning

직렬화되는 정보를 완전히 확신하는 경우에만 사용합니다 DataContractResolver . 악의적인 유형으로 인해 예기치 않은 동작이 발생할 수 있습니다.

생성자

Name Description
DataContractResolver()

DataContractResolver 클래스의 새 인스턴스를 초기화합니다.

메서드

Name Description
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ResolveName(String, String, Type, DataContractResolver)

역직렬화하는 동안 지정된 xsi:type 이름과 네임스페이스를 데이터 계약 형식에 매핑하려면 이 메서드를 재정의합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
TryResolveType(Type, Type, DataContractResolver, XmlDictionaryString, XmlDictionaryString)

serialization 중에 데이터 계약 형식을 이름 및 네임스페이스에 매핑하려면 이 메서드를 재정의 xsi:type 합니다.

적용 대상