如何声明WCF子类型(knownTypes)而不必引用它

时间:2017-06-28 12:27:58

标签: c# wcf

我们有一台服务器可以返回"配置",这种配置是一个庞大而复杂的类层次。

我们的应用程序由" packages"工作,这意味着我们有一个" common" base,然后有部分应用程序甚至无法安装。

这意味着配置类并非都在同一个项目中,我们的结构通常如下:

join

在其他一些项目中,有一些实现它们的类:

public class SomeObject{
   public IEnumerable<ISomeObjectChild> Childs{get;set;}
}
public interface SomeObjectChild{
   //[...]
}

有工厂来实例化那些孩子,一切都很好。

现在我们必须使用WCF通过网络传输这种配置。

我的问题是,我知道我应该指明可能实现public class SomeChildImplementation: ISomeObjectChild{ //[...] } 的类型。我知道通常,我们应该用ISomeObjectChild声明它们,但这是不可能的:

  1. 本课程并不了解所有可能的孩子
  2. 本课程甚至无法引用孩子们的信息
  3. 那么我怎么能指出可能的实现方式呢?

    (在这种情况下,它有一个界面,但我还有其他一些带有抽象类的案例)。

1 个答案:

答案 0 :(得分:0)

KnownTypesAttribute有另一个构造函数,可用于指定将返回KnownTypes数组的方法,请参阅here

此方法的实现可能取决于您希望的动态。在某些配置文件中配置要支持的类型,或使用System.Reflection扫描实现ISomeObjectChild的类