【发布时间】:2016-11-07 10:02:17
【问题描述】:
我有一个包含 RunAsync 循环和 OWIN Web API 侦听器的 Service Fabric statefulservice。是否可以将依赖注入添加到 StatefulService 继承类和 API 控制器中?我真的只能得到其中一个。
如果我将容器逻辑放在 Startup.cs 中,那么我可以轻松获得 Web API 控制器的 DI,但不能获得有状态服务。
如果我将容器逻辑放在 Program.cs 中,那么我可以将它用于有状态服务,但不能用于 Web api。 (实际上这感觉更像是服务定位器,但在这种情况下我可以接受)
程序.cs
private static void Main()
{
var builder = new ContainerBuilder();
builder.RegisterModule<MyModule>();
var container = builder.Build();
ILogger logger = container.Resolve<ILogger>();
ServiceRuntime.RegisterServiceAsync("MyService", (context) => new MyService(context, logger)).GetAwaiter().GetResult();
}
如果不将 IContainer 传递给 StatefulService 构造函数,我不知道如何将其用于 Web API 的启动初始化以设置 DependencyResolver。
【问题讨论】:
-
你见过这个吗? jamessturtevant.com/posts/…
-
@TheBeardedLlama 那个具体的例子只关注有状态的服务端,它只使用可怜的 mans DI,而不是容器。
标签: c# dependency-injection autofac azure-service-fabric