簡體   English   中英

實現特定接口的“類型”的C#列表

[英]C# list of “Type” that implements specific interface

我想創建一個List<System.Type> listOfTypesOfGlasses ,其中Type必須實現一個特定的接口IGlass ,所以我可以用Types of眼鏡加載它。 有沒有辦法在編譯時強制執行此約束(必須實現IGlass )?

實現隱藏列表的方法/類。

class YourClass {
    // intentionally incomplete
    private List<Type> listOfTypesOfGlasses;
    public void AddToList<T>() : where T: IGlass
    {
        listOfTypesOfGlasses.Add(typeof(T));
    }
}

編輯:下面是原始答案,假設Type表示占位符,而不是System.Type

您需要做的只是 List<IGlass>

要么

您應該在具有約束的 List<T>周圍編寫自己的包裝器類。

要么

子類 List<T>並在其上施加一般約束-但是不鼓勵這種做法。

typeof(IGlass)typeof(Glass)都是Type對象-不是可以在通用約束中過濾的不同類。 沒有通用限制可用於存儲的 如果要存儲所有可能實現IGlass的類型的實例 ,但不能過濾可以存儲的實際Type對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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