我正在尝试使用Onion架构来处理OWIN / Katana上托管的WebAPI服务。
我有这样的解决方案结构:
我希望DependencyResolution项目为WebApi项目注入依赖项。 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项目中引用它(看起来有点不像洋葱)?
答案 0 :(得分:1)
您可以使用Web API程序集的名称来获取其实例:
builder.RegisterApiControllers(Assembly.Load("WebApiAssembly"));