我正在创建一个WCF主机应用程序。我的Service类定义为PerSession,如下所示:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class CalculatorService : ICalculatorInstance
{
//...
}
我认为这意味着每次创建新会话时,都会实例化一个新的CalculatorService类实例。但是,如果我有一个所有实例都依赖的公共依赖项,那么将该依赖项传递给所有实例的最佳方法是什么?
ServiceHost
类似乎没有将“状态”对象传递给所有实例?有没有使用静态变量或单例的另一种方法?
使用依赖注入。我没有使用过WCF,但是在WPF和UWP中使用了DI容器。这是一篇由Scott Hannen撰写的关于该主题的WCF相关文章。
http://scotthannen.org/blog/2016/04/13/wcf-dependency-injection-in-5-minutes.html
以下是Microsoft在UWP应用程序中显示DI的示例。虽然细节可能会改变,但概念将保持不变。