Внедрение свойств для класса базового контроллера

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

11
задан nemesv 29 December 2012 в 08:29
поделиться