DataContractResolver.TryResolveType Method

.NET Framework 4.6 and 4.5

Override this method to map a data contract type to an xsi:type name and namespace during serialization.

Namespace:  System.Runtime.Serialization
Assemblies:   System.Runtime.Serialization (in System.Runtime.Serialization.dll)
  System.Runtime.Serialization.Xml (in System.Runtime.Serialization.Xml.dll)

public abstract bool TryResolveType(
	Type type,
	Type declaredType,
	DataContractResolver knownTypeResolver,
	out XmlDictionaryString typeName,
	out XmlDictionaryString typeNamespace
)

Parameters

type
Type: System.Type

The type to map.

declaredType
Type: System.Type

The type declared in the data contract.

knownTypeResolver
Type: System.Runtime.Serialization.DataContractResolver

The known type resolver.

typeName
Type: System.Xml.XmlDictionaryString

The xsi:type name.

typeNamespace
Type: System.Xml.XmlDictionaryString

The xsi:type namespace.

Return Value

Type: System.Boolean
true if mapping succeeded; otherwise, false.

If you want to use the known type resolution logic inside your implementation, a reference to it is passed in as the knownTypeResolver parameter.

The following example shows an implementation of the TryResolveType method.

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

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2015 Microsoft