我有一個類型的集合,我想過濾掉每個不具體的類型。C# - 如何檢查類型是否具體?
我可以看到,我可以檢查isAbstract和isInterface趕上大多數非混凝土,但是這會錯過什麼?
是否有「isConcrete」屬性?
我有一個類型的集合,我想過濾掉每個不具體的類型。C# - 如何檢查類型是否具體?
我可以看到,我可以檢查isAbstract和isInterface趕上大多數非混凝土,但是這會錯過什麼?
是否有「isConcrete」屬性?
我想,如果你給IsClass && !IsAbstract
一個嘗試這可能工作?
if isConcreteType(myType) { DoSomething(); }
bool isConcreteType(Type type) {
return type.IsClass && !type.IsAbstract && !type.IsInterface;
}
按照評論由KC-NH:
的Structs是值類型等IsClass將假。你想把結構看成具體的類嗎?如果是這樣,刪除IsClass條件
所以,如果你要考慮struct具體類型,你必須一波帶走了IsClass
約束。
bool isConcreteType(Type type) { return !type.IsAbstract && !type.IsInterfaces; }
結構是值類型,因此IsClass將爲false。你想把結構看成具體的類嗎?如果是這樣,請刪除IsClass條件。 – 2014-09-12 16:15:33
任何不抽象或接口是具體的。這並不是說你可以實例化它, – 2014-09-12 15:59:13
'IsAbstract'也捕獲接口 – 2014-09-12 16:00:23