c# – 基础控制器类的属性注入

前端之家收集整理的这篇文章主要介绍了c# – 基础控制器类的属性注入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图自动设置一个属性从任何控制器派生自我的BaseController类.这是我的Application_Start方法中的代码.当我尝试访问它时,UnitOfWork属性始终为空.
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<VesteraTechnologiesContext>().As<IContext>();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>();
builder.RegisterType<BaseController>()
       .OnActivated(c => c.Instance.UnitOfWork = c.Context.Resolve<IUnitOfWork>());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

这是BaseController的样子

public class BaseController : Controller
{
    public IUnitOfWork UnitOfWork { get; set; }
}

我通过一个属性而不是通过一个构造函数来做这个的原因是,因为构造函数不被继承,所以我不必在需要访问UnitOfWork属性的每个控制器中复制构造函数.

解决方法

默认情况下,Autofac将控制器注册为使用构造函数注入.启用 property injection with autofac:您应该使用:
builder.RegisterControllers(typeof(MvcApplication).Assembly)
       .PropertiesAutowired();

猜你在找的C#相关文章