c# – Autofac:如何解析类的所有通用接口

我在这里有这样的层次结构:

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实现了两种形式的通用协变接口.

我希望autofac在解析公共接口时两次返回C类的单个实例:container.Resolve< IEnumerable< I< IItem>>>().怎么做到这一点?

BTW,.NET解析(C为I< IItem>).GetItem()为I< Item1> .GetItem(),
even((I< IItem>)(C as I< Item2>)).GetItem()==“i1”

解决方法:

我刚刚意识到问题是没有意义的.主要思想是在IEnumerable< I< IItem>>中获得C的两次实例.并让GetItem()为第一个项目提供Item1,为第二个项目提供Item2.但这是不可能的,.NET类型不会那样工作.抱歉令人困惑.如果我错了,请纠正我.

上一篇:c# – Autofac:注册Async Factory方法


下一篇:c# – 为什么导航有时会返回null?