代码之家  ›  专栏  ›  技术社区  ›  tsul

autofac:如何解析类的所有通用接口

  •  4
  • tsul  · 技术社区  · 6 年前

    我在这里有这样一个等级:

    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"

    1 回复  |  直到 6 年前
        1
  •  0
  •   tsul    6 年前

    我刚刚意识到这个问题毫无意义。主要的想法是在 IEnumerable<I<IItem>> GetItem() Item1 Item2