gpt4 book ai didi

inversion-of-control - 如何使用 autofac 进行自定义初始化

转载 作者:行者123 更新时间:2023-12-04 23:33:07 26 4
gpt4 key购买 nike

我正在将 autofac 添加到现有项目中,并且某些服务实现需要调用它们的 Initialize 方法并传递配置信息。目前我正在使用代码:

builder.Register(context =>
{
var service =
new SqlTaxRateProvider(context.Resolve<IUserProvider>());
service.Initialize(config);
return service;
}
).As<ITaxService>()
.SingleInstance();

这可行,但我仍在自己创建对象,这是我试图摆脱这种情况并允许 autofac 为我处理它。是否可以配置执行自定义初始化的创建后操作?

为了让您了解我理想的情况,这将是代码:
builder.RegisterType<SqlTaxRateProvider>()
.As<ITaxService>()
.OnCreated(service=> service.Initialize(config))
.SingleInstance();

更新:
我正在使用 Autofac-2.1.10.754-NET35

最佳答案

.OnActivating(e => e.Instance.Initialize(...))

应该做的伎俩。

您还可以研究 Startable 模块(参见 Startable entry in the Autofac wiki)。

Mark 建议在构造函数中进行初始化也是一个很好的建议。在这种情况下使用
.WithParameter(new NamedParameter("config", config))

将 config 参数与其他构造函数依赖项合并。

关于inversion-of-control - 如何使用 autofac 进行自定义初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320536/

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