2010-12-10 15 views
0

ので、問題:Castle Windsorは反則のないジェネリックを解決できますか?

var ctls = container.ResolveAll<IControl<Derived>>() 
ctls.Lenght == 2 ? 

は、だから私は両方の実装を得ることができます:

interface IControl<in T> where T : Base 
{ 
    void Execute(T item); 
} 


class ControlDerived : IControl<Derived> 
{ 
    public void Execute(Derived item) 
    { 
    } 
} 

class ControlBase : IControl<Base> 
{ 
    public void Execute(Base item) 
    { 
    } 
} 

class Derived : Base 
{ 
} 

が、それはこのようなウィンザーの仕事を作ることは可能ですか?

+0

を渡します。それじゃない? –

答えて

1

あなたが怠け者だ:P

は、私は次のテストを実行し、あなたが、私はそれが動作するはずだと思うの最新バージョンおよび.NET 4ビルドを使用している場合、それは

[Test] 
public void ResolveAll_can_resolve_contravariant_components() 
{ 
Container.Register(Component.For<IAmContravariant<Base>>().ImplementedBy<ContravariantBase>(), 
       Component.For<IAmContravariant<Derived>>().ImplementedBy<ContravariantDerived>()); 

var all= Container.ResolveAll<IAmContravariant<Derived>>(); 
Assert.AreEqual(2, all.Length); 
} 
+0

ありがとう、いくつかの誤った設定があるようです。 – xumix

関連する問題