IOC 使用 AutoFac 进行内部类

use*_*839 4 class internal inversion-of-control autofac

我有一个内部类,它是服务工厂内部可见的。它也继承了一个公共接口。

当我想在我的应用程序中使用它的功能时,我为接口声明对象并通过服务工厂为特定类实例化它。

现在我们正在使用 MVC,我想在我的一个控制器中为这个类创建 IOC。这个类是内部的,我不能在 global.ascx 中注册它

例如,当我编写 builder.RegisterType().As().InstancePerHttpRequest() 时;
CommonSvc 是内部的,它抛出编译时错误,因为 Services.CommonSvc' 由于其保护级别而无法访问

请指教

Jim*_*lla 6

您的选择:

  1. 制作CommonSvc
  2. 使用InternalsVisibleToAttribute注释您的程序集,以使内部类型对调用程序集可见。
  3. 不是CommonSvc直接RegisterAssemblyTypes()注册,而是按照约定使用注册。例如:
    builder.RegisterAssemblyTypes(typeof(SomeOtherTypeInTheSameAssembly).Assembly)
           .Where(t => typeof(SomeInterface).IsAssignableFrom(t))
           .AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)