在Castle Windsor,当我想使用Factory方法时,我简单地创建这样的容器:
container.Register(Component.For<ISomeClass>().UsingFactoryMethod(() => { return new SomeClass(); } ));
如何使用caliburn.micro集成的IoC容器实现同样的想法?我已经阅读了文档,但我仍然无法理解。
答案 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());