所以,问题是:
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
{
}有没有可能让Windsor这样工作:
var ctls = container.ResolveAll<IControl<Derived>>()
ctls.Lenght == 2 ?这样我就可以得到两个实现了吗?
发布于 2010-12-11 07:16:10
你太懒了:p
我运行了下面的测试,它通过了
[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);
}https://stackoverflow.com/questions/4409571
复制相似问题