我正在创建WCF主机应用程序。我的Service类定义为PerSession,如下所示:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class CalculatorService : ICalculatorInstance
{
//...
}
我认为这意味着每次创建新会话时,都会实例化CalculatorService类的新实例。但是,如果我有一个所有实例都将依赖的公共依赖关系,那么将这种依赖关系传递给所有实例的最佳方法是什么?
ServiceHost
类似乎还没有将“状态”对象传递给所有实例的方法?有没有不使用静态变量或单例的另一种方法?
答案 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。尽管细节可能有所变化,但概念将保持不变。