【发布时间】:2011-10-01 15:26:13
【问题描述】:
我目前正在尝试构建一个小型应用服务器,它可以托管多个 WCF 服务。这些服务(当然还有它们的依赖项)应该由 DI/IoC 容器(目前是 LightCore,但由于我通过 CommonServiceLocator 使用它应该很容易交换)来实例化。 不幸的是,我偶然发现了一个问题。显然,我必须创建 ServiceHost 实例来托管提到的 WCF 服务。我已经构建了一个自定义的 InstanceProvider 和 ServiceBehavior 来处理服务的所有依赖项,但是 ServiceHost 的构造函数需要服务的服务类型来托管。此时在我的程序中,我只知道接口类型,因为只有 DI 容器知道当前正在使用哪个服务实现。
一种廉价的方法是通过 Service Locator 创建服务类型的“虚拟”实例,并将 myDummyInstance.GetType() 的输出提供给 ServiceHost 构造函数,但这只会让人觉得痛苦,无用的实例化和使用 Service定位器而不是 DI...必须有更好的方法。
有什么想法吗? :)
【问题讨论】:
标签: wcf dependency-injection servicehost