1

我们正在使用 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 错误。我们将继续尝试方法。

4

1 回答 1

0

您可以在构建序列化程序时设置已知类型,这可能会帮助您解决此问题

http://msdn.microsoft.com/en-us/library/aa344259.aspx

于 2013-08-28T11:09:50.557 回答