在文檔中很難找到比我想象的更多的東西。無論如何,我有一些Type
的實例。我如何知道它們是否代表類,方法,接口等?獲取C#反射中「類型」的類型
class Bla { ... } typeof(Bla).GetKindOrWhatever() // need to get something like "Class"
(我使用的是單聲道Linux上但不應該影響這個問題,我在做移植的代碼)
在文檔中很難找到比我想象的更多的東西。無論如何,我有一些Type
的實例。我如何知道它們是否代表類,方法,接口等?獲取C#反射中「類型」的類型
class Bla { ... } typeof(Bla).GetKindOrWhatever() // need to get something like "Class"
(我使用的是單聲道Linux上但不應該影響這個問題,我在做移植的代碼)
Type.IsClass
可能有助於在這裏。還有Type.IsInterface
。
退房...... http://msdn.microsoft.com/en-us/library/system.type_members.aspx
上有種類不少 「IsXxxx」 屬性。希望這些會做你想做的。
順便說一句,你應該檢查出其他問題上SO這個問題上,包括這一個...
typeof(System.Enum).IsClass == false
...如果你要來檢查類型枚舉類型,因爲有一些奇怪的(但可預測的)結果。
Type類有許多屬性。
typeof(Bla).IsClass
typeof(Bla).IsInterface
等
http://msdn.microsoft.com/en-us/library/system.type_properties.aspx
Type類具有一些名爲IsXXX的屬性。
例如它有一個IsEnum,IsClass,IsInterface。
如果我理解正確你的問題,這是你所需要的
正如其他人所說,Type類有,如果你只需要知道你的類型是一個類,接口,委託等,您可以使用各種屬性。
如果你有一個類型的對象,你想知道,如果它是一個特定的類型,那麼我建議使用的類型類中找到的IsAssignableFrom法:用現在
Type objectType = obj.GetType();
Type interfaceType = typeof(IExample);
if (interfaceType.IsAssignableFrom(objectType))
{
//...
}
。我找不到的是與type.IsStruct對應的s: – 2009-11-25 00:56:52
IsValueType是最接近你的。 struct是C#語言的東西,而不是.NET CLR的東西。所有結構都是值類型。請記住關於枚舉的事情,雖然我上面提到 – 2009-11-25 08:49:20
是否有任何其他值類型可能出現在Assembly.getExportedMembers()中?我懷疑原始人會出現在那裏,而這兩者是我現在能想到的唯一的價值類型。 – 2009-11-25 22:31:05