簡體   English   中英

Autofac:如何解析類的所有通用接口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM