1
// case1
public class A<T> {
public delegate bool Compare(T a, T b);
}
// case2
public class A {
public delegate bool Compare<T>(T a, T b);
}
Test(typeof(A<>.Compare));
Test(typeof(A.Compare<>));
void Test(Type type)
{
// #1
}
我的問題:C#反思 - 代表泛型類
如何在位置#1編寫代碼來告訴類型是情形1或情形2?
似乎有
typeof(A<>.Compare).GetGenericArguments()[0]
和
typeof(A.Compare<>).GetGenericArguments()[0]
由於沒有什麼區別!
-------------編輯----------------
我想是要我說出類型的T-來從。 T是在A中定義還是在Compare中定義?
可能還有其他更復雜的情況,例如
public class B<T> {
public delegate bool Compare<X>(X a, T b);
}
在這種情況下,我想知道:X是比較確定,而T是在B.
你就不能做到'型== typeof運算(A <>比較。)'?如果它是錯誤的,那就是另一個(取決於它需要具體的具體情況)。 –
謝謝@LukeBriggs不,它需要100%具體。其實我需要知道T從哪裏來。 – qiucw
100%具體是什麼意思?你的意思是你想知道類型參數'T'是在類還是方法上定義的?如果是這樣的話,如果你現在更新你的問題來清楚地說明問題,這聽起來不像是你要求的那樣。 – Adrian