我试图遵循OWIN/Katana上托管的WebAPI服务的洋葱体系结构。
我有一个这样的解决方案结构:
我希望DependencyResolution项目为WebApi项目注入(inject)依赖项。 DependencyResolution确实有一个生成任务,可输出到WebApi项目的输出文件夹。
我正在使用Autofac和DotNetDoodle.Owin.Dependencies NuGet包来遵循此处概述的方法:
http://www.tugberkugurlu.com/archive/owin-dependencies--an-ioc-container-adapter-into-owin-pipeline
但是,在我的Startup类中注册服务时,对RegisterApiControllers()的调用将失败。 DepenedencyResolution程序集将是第一个执行的程序,因此它将无法获取包含ApiContollers的程序集(WebAPI程序集):
public IContainer RegisterServices()
{
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<MyRepo>()
.As<IRepo>()
.InstancePerLifetimeScope();
return builder.Build();
}
是在这里唯一可行的方法是使用Assembly.Load(),还是我应该放弃将DependencyResolution项目保持隔离并从WebApi项目中引用它的想法(似乎比oniony少一点)?
最佳答案
您可以使用Web API程序集的名称来获取其实例:
builder.RegisterApiControllers(Assembly.Load("WebApiAssembly"));
关于c# - 是否可以在OWIN上使用Web API实现Onion Architecture和DI?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23763834/