gpt4 book ai didi

c# - 基 Controller 类的属性注入(inject)

转载 作者:可可西里 更新时间:2023-11-01 08:43:08 27 4
gpt4 key购买 nike

我正在尝试在派生 self 的 BaseController 类的任何 Controller 上自动设置一个属性。这是我的 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 属性的 Controller 中复制构造函数,因为构造函数不是继承的。

最佳答案

Autofac 默认注册 Controller 以使用构造函数注入(inject)。启用 property injection with autofac : 你应该使用:

builder.RegisterControllers(typeof(MvcApplication).Assembly)
.PropertiesAutowired();

关于c# - 基 Controller 类的属性注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7786253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com