0

我正在使用自定义 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甚至没有使用!

我看到的所有示例都按照我的方式使用它。什么是正确的实现?

4

0 回答 0