我可以想象这在Castle中可能会非常直接,但我对这项技术不熟悉并且谷歌搜索了好几个小时没有运气!
我有以下内容:
container.Register(
Component.For<MySpecialClass>().UsingFactoryMethod(
() => new MySpecialClass()).LifeStyle.Singleton);
Run Code Online (Sandbox Code Playgroud)
现在非常正确,这是延迟加载的,即传递给UsingFactoryMethod()的lambda表达式在我实际要求Castle解析类的实例之前没有被执行.
但是我希望Castle在我注册后立即创建实例.这可能吗?
Mau*_*fer 10
对于这个简单的情况,您只需注册一个现有实例:
var special = new MySpecialClass();
container.Register(Component.For<MySpecialClass>().Instance(special));
Run Code Online (Sandbox Code Playgroud)
Mos*_*evi 10
您可以使用构建它的Startable工具,如下所示:
container.AddFacility<StartableFacility>();
container.Register(Component.For<MySpecialClass>().LifeStyle.Singleton.Start());
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读它
| 归档时间: |
|
| 查看次数: |
6317 次 |
| 最近记录: |