我在这里有这样一个等级:
public interface I<out T>
{
T GetItem();
}
public class C : I<Item1>, I<Item2>
{
Item1 I<Item1>.GetItem() => new Item1();
Item2 I<Item2>.GetItem() => new Item2();
}
public interface IItem { string Name { get; } }
public class Item1 : IItem { public string Name => "i1"; }
public class Item2 : IItem { public string Name => "i2"; }
主要的一点是,类C实现了通用协变接口的两种形式。
我希望autopac在解析公共接口时两次返回类C的单个实例:
container.Resolve<IEnumerable<I<IItem>>>()
.如何做到这一点?
btw,.net解析
(C as I<IItem>).GetItem()
作为
I<Item1>.GetItem()
,请
即使
((I<IItem>)(C as I<Item2>)).GetItem() == "i1"