Я пытаюсь автоматически установить свойство на любом контроллере, который происходит из моего класса BaseController
. Вот код в моем методе Application_Start
. Свойство UnitOfWork
всегда имеет значение null при попытке доступа к нему.
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
, поскольку конструкторы не наследуются.