Castle Windsor:使用内部构造函数注册类?

jon*_*iba 3 castle-windsor

Castle Windsor问题:是否可以注册一个具有容器内部构造函数的类?

谢谢Joni

Krz*_*mic 6

对的,这是可能的.默认组件激活器仅查找公共构造函数.您可以为该组件提供自定义组件激活器,以考虑内部构造函数,或者使用例如工厂来激活组件:

var container = new WindsorContainer()
    .AddFacility<FactorySupportFacility>()
    .Register( Component.For<Foo>()
                   .UsingFactoryMethod( () => new Foo() ) );
var foo = container.Resolve<Foo>();
Run Code Online (Sandbox Code Playgroud)

但是你应该重新考虑将.ctor内部放在首位.这样做真的很不是一个好主意,特别是当你把课程作为外部世界的一个组件暴露时.

  • 嗨,Krzystzof,我想“如果要怎么办?” 对这个问题是含蓄的!我猜不会。你是怎么做到的?干杯乔尼 (2认同)