[英]how to fix 'T' is a 'type parameter' but is used like a 'variable' compile error
我需要檢查泛型類型參數T
是MyEntity
還是它的子類。
下面的代碼導致此編譯器錯誤:
'T' is a 'type parameter' but is used like a 'variable'
怎么修?
public class MyEntity { }
static void Test<T>()
{
// Error 34 'T' is a 'type parameter' but is used like a 'variable'
if (T is MyEntity)
{
}
}
您可以在Type
上使用IsAssignableFrom
方法來檢查是否可以將一個Type
分配給另一個Type
。
if (typeof(MyEntity).IsAssignableFrom(typeof(T)))
注意:如果您希望T
只能是MyEntity
或它的子類,您可以定義泛型約束,如下所示:
static void Test<T>() where T : MyEntity
{
}
而像Test<object>()
這樣的代碼甚至都不會編譯
您可以使用以下代碼檢查IsAssignableFrom
:
public static void F<T>()
{
var isAssignable = typeof(IEnumerable).IsAssignableFrom(typeof(T));
Console.WriteLine ("{0} is {1} IEnumerable", typeof(T).Name, isAssignable ? "" : "not");
}
例子:
F<IList>(); //prints IList is IEnumerable
F<IEnumerable>(); //prints IEnumerable is IEnumerable
F<object>(); //prints object is not IEnumerable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.