【发布时间】:2017-04-12 16:52:39
【问题描述】:
我正在尝试在派生自我的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 属性的控制器中复制构造函数,因为构造函数不是继承的.
【问题讨论】:
标签: c# asp.net-mvc inversion-of-control autofac