Caliburn Micro IoC / DI FactoryMethod

时间:2016-01-17 09:27:49

标签: c# wpf dependency-injection inversion-of-control caliburn.micro

在Castle Windsor,当我想使用Factory方法时,我简单地创建这样的容器:

container.Register(Component.For<ISomeClass>().UsingFactoryMethod(() => { return new SomeClass(); } ));

如何使用caliburn.micro集成的IoC容器实现同样的想法?我已经阅读了文档,但我仍然无法理解。

1 个答案:

答案 0 :(得分:3)

每个SimpleContainer方法都只是使用RegisterHandler的便捷方法。您可以在the docs中看到此评论:

  

注意:以上所有注册方法实际上都使用了Handles。

或者只需阅读the source即可。此方法允许您传递一个带容器的函数并返回一个对象实例(Func<SimpleContainer, object>)。

因此,您只需使用RegisterHandler或通用Handler扩展方法注册您的工厂:

container.Handler<ISomeClass>(container => new SomeClass());

或者:

container.RegisterHandler(typeof(ISomeClass), null, container => new SomeClass());