使用Autofac注册对象,使其像控制器一样工作

时间:2017-06-09 11:45:25

标签: c# dependency-injection autofac

我有一个我正在调用EndPointConfigurator的类,我想在其中注入一些东西,特别是一个工作单元,并在该类中使用它。

 public class EndPointConfigurator
 {
     private static UnitOfWork _unitOfWork;
     public EndPointConfigurator(IUnitOfWork uow)
     {
         _unitOfWork = (UnitOfWork)uow;
     }              

     //use unit of work
 }

我注册了我的控制器:

builder.RegisterAssemblyTypes(getExecutingAssembly)
       .Where(t => t.Name.EndsWith("Controller", StringComparison.InvariantCulture));

我想知道注册这个类的最佳方法是什么,以便它可以像控制器那样注入一些东西。控制器没有接口,我不想或不需要这个类的接口,因为我不需要将它注入任何地方。

1 个答案:

答案 0 :(得分:1)

您可以将类型注册为:

builder.RegisterType<EndPointConfigurator>().As<EndpointConfigurator>(); 

builder.RegisterType<EndPointConfigurator>().AsSelf(); 

或者,如果您未指定任何服务, Autofac 将自动注册为

builder.RegisterType<EndPointConfigurator>(); 

我更喜欢第一种解决方案,这样我们明确告诉容器我们想要做什么。