我在无状态服务中正确使用
Asp.net核心DI,因为它基本上是一个带控制器的普通WebApi应用程序.
我无法弄清楚如何在有状态服务中使用依赖注入.
这是有状态服务的默认构造函数:
public MyService(StatefulServiceContext context): base(context)
{
}
并在Program.cs中调用
ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context)).GetAwaiter().GetResult();
我想在Stateful服务中使用类似的东西:
private readonly IHelpers _storageHelpers;
public MyService(IHelpers storageHelpers)
{
_storageHelpers = storageHelpers;
}
我已经在Stateful服务的Configuration部分注册了它,但是如果我尝试使用上面的代码我有错误:
StatefulService不包含带0个参数的构造函数
如何使它工作?
最佳答案 错误是关于StatefulService的构造函数,它至少需要一个ServiceContext参数.您的代码仅提供Storagehelper.
这将是使其工作的最简单方法:
服务:
private readonly IHelpers _storageHelpers;
public MyService(StatefulServiceContext context, IHelpers storageHelpers)
: base(context)
{
_storageHelpers = storageHelpers;
}
程序:
ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context, new StorageHelper())).GetAwaiter().GetResult();
在’program’中,您还可以使用IOC容器来获取存储帮助程序实例.