我们正在使用 C# 和 .NET 4 构建启用 WCF 的应用程序。我们有一个“父”程序集,它实现:
[DataContract]
public abstract class A
{
//...
}
然后,其他“子”程序集实现 的子类A
,如下所示:
[DataContract]
public class B : A
{
//...
}
在另一个程序集中,我们尝试将一些方法封装为 WCF 服务。其中一些方法的返回类型为A
.
显然,子程序集需要包含对父程序集的引用,以便派生类从 class 继承A
。当 WCF 似乎要求我们KnownType
向类添加属性A
以列出其所有潜在的子类时,问题就出现了;这将需要A
所在的父程序集具有对子程序集的引用,这将创建循环依赖关系。
有没有其他方法可以解决这个问题?WCF 真的需要知道用作返回类型的抽象类的所有潜在具体类的类型吗?谢谢你。
编辑。正如一些评论所建议的,我们已经尝试了基于KnownTypeAttribute.MethodName的方法。这将允许我们动态加载子类所在的程序集,并根据需要将子类返回给 WCF。类A
作为返回类型时有效,但作为方法参数时无效;我们不断获得“类型不是预期的”WCF 错误。我们将继续尝试方法。