asp.net-core – 使用Asp.net核心依赖注入的服务结构状态服务

我在无状态服务中正确使用
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容器来获取存储帮助程序实例.

点赞