Dam*_*ern 4 inversion-of-control autofac
我正在向现有项目添加autofac,并且一些服务实现需要调用其Initialize方法并传递配置信息.目前我正在使用代码:
builder.Register(context =>
{
var service =
new SqlTaxRateProvider(context.Resolve<IUserProvider>());
service.Initialize(config);
return service;
}
).As<ITaxService>()
.SingleInstance();
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我仍在创建自己的对象,这正是我试图摆脱这个并允许autofac为我处理它.是否可以配置执行自定义初始化的后期创建操作?
为了让你了解我理想的事情,这将是代码:
builder.RegisterType<SqlTaxRateProvider>()
.As<ITaxService>()
.OnCreated(service=> service.Initialize(config))
.SingleInstance();
Run Code Online (Sandbox Code Playgroud)
更新:我使用的是Autofac-2.1.10.754-NET35
.OnActivating(e => e.Instance.Initialize(...))
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
您还可以调查Startable模块(请参阅Autofac wiki中的Startable条目).
Mark建议在构造函数中进行初始化也是一个很好的建议.在那种情况下使用
.WithParameter(new NamedParameter("config", config))
Run Code Online (Sandbox Code Playgroud)
将config参数与其他构造函数依赖项合并.
| 归档时间: |
|
| 查看次数: |
4134 次 |
| 最近记录: |