如何将通用依赖关系传递给每个WCF服务实例

时间:2019-03-11 17:21:13

标签: c# wcf

我正在创建WCF主机应用程序。我的Service类定义为PerSession,如下所示:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]   
public class CalculatorService : ICalculatorInstance   
{   
    //...  
}  

我认为这意味着每次创建新会话时,都会实例化CalculatorService类的新实例。但是,如果我有一个所有实例都将依赖的公共依赖关系,那么将这种依赖关系传递给所有实例的最佳方法是什么?

ServiceHost类似乎还没有将“状态”对象传递给所有实例的方法?有没有不使用静态变量或单例的另一种方法?

1 个答案:

答案 0 :(得分:1)

使用依赖注入。我没有使用WCF,但是在WPF和UWP中使用了DI容器。这是斯科特·汉嫩(Scott Hannen)撰写的与该主题相关的WCF相关文章。

http://scotthannen.org/blog/2016/04/13/wcf-dependency-injection-in-5-minutes.html

以下是Microsoft提供的示例,该示例在UWP应用中显示DI。尽管细节可能有所变化,但概念将保持不变。

https://github.com/Microsoft/InventorySample