[英]Using the `is` operator with Generics in C#
我想做這樣的事情:
class SomeClass<T>
{
SomeClass()
{
bool IsInterface = T is ISomeInterface;
}
}
對於這樣的事情,最好的方法是什么?
注意:我不希望用where
約束T
,但我希望我的代碼知道T
實現的接口類型。 我寧願我不必構造一個T
。
我認為您不能為此使用is
運算符。 但是您可以使用 IsAssignableFrom:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
應該使用以下代替
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
是運算符
is
運算符用於檢查對象的run-time type
是否與給定的type
compatible
。
如果滿足以下兩個條件,則使用is
符合語法的表達式的計算結果為 true:
參考
您可以使用IsAssignableFrom :
class SomeClass<T>
{
SomeClass()
{
bool IsIComparable = typeof(IComparable).IsAssignableFrom(typeof(T));
}
}
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T))
我相信你能做到最好:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
你可以嘗試做類似的事情
Type Ttype = typeof(T);
這將為您提供 Type 類的全部功能,該類具有“FindInterfaces”等功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.