[英]Autofac: How to resolve all generic interfaces of a class
我在這里有這樣的層次結構:
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 as I<IItem>).GetItem()
為I<Item1>.GetItem()
,
even ((I<IItem>)(C as I<Item2>)).GetItem() == "i1"
我剛剛意識到問題是沒有意義的。 主要思想是在IEnumerable<I<IItem>>
獲取C的兩次實例, 並讓GetItem()
為第一項提供Item1
,為第二項提供Item2
。 但這是不可能的,.NET類型不會那樣工作。 抱歉令人困惑。 如果我錯了,請糾正我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.