WCF客户端代理异常 - “类型不能添加到已知类型列表中”
-
30-09-2019 - |
题
在此示例中,我在为服务代码创建WCF客户端代理时遇到问题:
// data classes
[KnownType(typeof(ClassA))]
[KnownType(typeof(ClassB))]
public abstract class BaseClass : Dictionary<string, ITest>
{
}
public class ClassA : BaseClass
{
}
public class ClassB : BaseClass
{
}
public interface ITest
{
}
// service
[ServiceContract]
public interface IService1
{
[OperationContract]
BaseClass Method();
}
public class Service1 : IService1
{
public BaseClass Method()
{
...
}
}
每当我尝试使用“添加服务参考” VS中的“添加服务参考”创建WCF代理时,它就会失败,跟踪日志说
类型“ WCFProxyTest.Classa”不能添加到已知类型列表中,因为另一种类型的“ WCFProxyTest.ClassB”具有相同的数据合同名称'http://schemas.microsoft.com/2003/10/serialization/arrays:arrayofkeyvalueofstringanytype'已经存在。如果特定类型的集合不同 - 例如,列表u003CTest>和测试[],它们都不能添加为已知类型。考虑仅指定这些类型中的一种以添加到已知类型列表中。
我可以看到错误消息在说什么,但是是否有其他方法(除了重构类)。我正在处理一个遗留系统,该系统的课程与我的示例相同,并重写它们是一个选择,因为这些东西位于系统的核心中:S
有任何想法吗?谢谢!
解决方案
我决定以这样的方式重新分配代码,以至于我不必提供两个知名人士,这使我解决了问题。后来大约有300个语法错误。我会对其他任何方法感兴趣...
其他提示
尝试添加:
[KnownType(typeof(Dictionary<string, ITest>))]
不隶属于 StackOverflow