![](/img/trans.png)
[英]C# Check if type implements a specific generic interface with unknown types
[英]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.