我试图遵循OWIN/Katana上托管的WebAPI服务的洋葱体系结构。

我有一个这样的解决方案结构:

  • DependencyResolution:包含OWIN Startup类和IoC设置
  • WebApi:Web API Controller
  • 基础结构:接口(interface)实现
  • 核心:接口(interface)

  • 我希望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/

    10-13 06:53