2010-04-15 53 views
0

我有很多類,想創建某種'目錄'。System.Type的Array/List /目錄

這樣我就可以自動創建菜單。

單擊一個菜單項然後將創建該類的一個實例並顯示該窗口。

我想要的是一個System.Type的數組,我可以在所有類中填充數據而不需要實例化它們。

雖然從我的測試和(不成功)谷歌搜索,這似乎不可能。

任何想法?

回答

0

這是否適合你創建一個簡單的映射? ArrayList不是通用的,但是您可以使用自定義對象來填充內容。

var mapper = new System.Collections.Generic.Dictionary<string, System.Type>(); 
mapper.Add("show-about-box", typeof(MyApp.Forms.AboutBox)); 

然後你可以使用refleciton創建類的實例,使用這樣的代碼:

// Create an instance using [Activator.CreateInstance][1]. 
System.Type toCreate = mapper["show-about-box"]; 
Object o = Activator.CreateInstance(toCreate); 

// Or, using try-get to be safer 
System.Type toCreate = null; 
if (mapper.TryGetValue("show-about-box", out toCreate)) { 
    Object o = Activator.CreateInstance(toCreate); 
} 
+0

感謝。這真的很有幫助,適合我。 – Mike 2010-04-15 23:07:31