我们正在使用C#和.NET 4来构建支持WCF的应用程序。我们有一个“父”程序集实现:
[DataContract]
public abstract class A
{
//...
}
然后,其他“子”程序集实现A
的子类,如下所示:
[DataContract]
public class B : A
{
//...
}
在另一个程序集中,我们有一些方法正在尝试封装为WCF服务。其中一些方法的返回类型为A
。
显然,子程序集需要包含对父程序集的引用,以便派生类继承自类A
。当WCF似乎要求我们向类KnownType
添加A
属性以列出其所有潜在的子类时,就会出现问题;这将需要A
所在的父程序集对子程序集的引用,这将创建循环依赖项。
还有其他方法吗? WCF真的需要知道被用作返回类型的抽象类的所有潜在具体类的类型吗?谢谢。
修改即可。正如一些评论所建议的那样,我们尝试了基于KnownTypeAttribute.MethodName的方法。这将允许我们动态加载子类所在的程序集,并根据需要将子类返回给WCF。当类A
用作返回类型时它可以工作,但当它用作方法参数时它不起作用;我们一直在获得“未预期的类型”WCF错误。我们会继续尝试方法。
答案 0 :(得分:0)
您可以在构建Serializer时设置已知类型,这可能会解决此问题