2
当Windsor实例化类型时,是否可以执行一些自定义处理?Castle Windsor:启动服务时的自定义处理
类似的东西来:
container.Register(
AllTypes.Pick()
.FromAssembly(Assembly.GetExecutingAssembly())
.BasedOn<MyMarkerInterface>()
.WhenInstantiating(instance => // do some stuff with this instance)
.Configure(component => component.Startable().LifeStyle.Singleton)
.WithService.Base());
目前我们使用的IStartable。由于“开始”代码(即自定义处理)是相同的,所以将这个逻辑移出每个类别将是很好的。
谢谢! Brian
+1,但与容器无关的解决方案是装饰器:) – 2010-03-22 18:45:02
我不确定装饰器。你会把逻辑放在哪里?在.ctor?一旦你的组件被完全实例化了,如果你想让它被执行,也就是说属性连接起来了呢? 第一次打电话给任何方法时懒惰地打电话给它?不知道这是个好主意。 – 2010-03-22 18:58:09
谢谢Krysztof。对于其他读者,在版本2.1.0中添加了OnCreate方法。 – 2010-03-22 21:00:00