다음을 통해 공유


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

설명

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

경고

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

생성자

DataContractResolver()

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

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

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

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

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

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

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

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

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

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

ToString()

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

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

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

적용 대상