我正在使用自定义 DataContractResolver
public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
{
Type knownType = knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null);
if (knownType != null)
{
return knownType;
}...
TryResolve 方法也是如此(我不需要)
public override bool TryResolveType(Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace)
{
return knownTypeResolver.TryResolveType(type, declaredType, null, out typeName, out typeNamespace);
Resharper 告诉我,最后一个参数不应该为空,因为它是用[NotNull]
属性标记的。
ResolveName 方法也被System.Runtime.Serialization.KnownTypeDataContractResolver
该类覆盖。
这是实现:
public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
{
if (typeName == null || typeNamespace == null)
return (Type) null;
else
return this.context.ResolveNameFromKnownTypes(new XmlQualifiedName(typeName, typeNamespace));
}
该参数knownTypeResolver
甚至没有使用!
我看到的所有示例都按照我的方式使用它。什么是正确的实现?