class - IOC 使用 AutoFac 进行内部类

标签 class inversion-of-control autofac internal

我有一个内部类,它对服务工厂是内部可见的。它还继承了一个公共(public)接口(interface)。

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

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

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

请指教

最佳答案

您的选择:

  • 制作 CommonSvc公众
  • 使用 InternalsVisibleToAttribute 注释您的程序集使内部类型对调用程序集可见。
  • 而不是注册CommonSvc直接使用 RegisterAssemblyTypes()按照惯例进行注册。例如:

  •     builder.RegisterAssemblyTypes(typeof(SomeOtherTypeInTheSameAssembly).Assembly)
               .Where(t => typeof(SomeInterface).IsAssignableFrom(t))
               .AsImplementedInterfaces();
    

    关于class - IOC 使用 AutoFac 进行内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23216156/

    相关文章:

    java - 温度计类逻辑错误

    c++ - C++ 中的类问题

    php - 使用空格访问类属性

    c# - 从多个程序集中注册 IoC 容器

    c# - 我可以在单层或使用的每一层中注册所有 IoC 容器组件吗?

    c# - 为什么导航属性有时会返回 null?

    generics - 使用 Autofac 注册部分开放泛型

    c# - 使用 Autofac 创建具有依赖关系的类的实例

    java - Java中如何使用不同的ClassLoader重新加载已加载的类?

    asp.net - 如何在 ASP.NET Web 窗体中使用依赖注入(inject)