var types=from m in System.Reflection.Assembly.Load("System").GetTypes()
where m.IsClass
where // something to check whether or not the type is a static class.
select m;
我想從我的結果中填充任何靜態類。如何測試給定類型是否是靜態類?
var types=from m in System.Reflection.Assembly.Load("System").GetTypes()
where m.IsClass
where // something to check whether or not the type is a static class.
select m;
我想從我的結果中填充任何靜態類。如何測試給定類型是否是靜態類?
var types = from m in System.Reflection.Assembly.Load("System").GetTypes()
where m.IsClass && m.IsAbstract && m.IsSealed
select m;
編輯:檢查m.IsSealed
你需要檢查,如果類是密封和摘要。
CLR不知道靜態類,但它確實支持密封的抽象類,即使你不能明確地編譯它們,靜態類也會被編譯爲密封的抽象類。
無論你做什麼都將基於啓發式 - 在IL級沒有具體的「這個類是靜態的」。對於C#和VB編譯器如何在未來版本中實現靜態/模塊並不能保證。
好,靜態類將沒有公共的構造函數,並且將被密封,所以下面可能是不夠的:
var types=from m in System.Reflection.Assembly.GetExecutingAssembly().GetTypes()
where m.IsClass && (!m.IsSealed || m.GetConstructors().Any())
select m;
這不會幫助你:http://stackoverflow.com/questions/ 1175888 /確定 - 如果類型是靜態的? – Patko 2010-10-08 06:20:41