我有很多類,想創建某種'目錄'。System.Type的Array/List /目錄
這樣我就可以自動創建菜單。
單擊一個菜單項然後將創建該類的一個實例並顯示該窗口。
我想要的是一個System.Type的數組,我可以在所有類中填充數據而不需要實例化它們。
雖然從我的測試和(不成功)谷歌搜索,這似乎不可能。
任何想法?
我有很多類,想創建某種'目錄'。System.Type的Array/List /目錄
這樣我就可以自動創建菜單。
單擊一個菜單項然後將創建該類的一個實例並顯示該窗口。
我想要的是一個System.Type的數組,我可以在所有類中填充數據而不需要實例化它們。
雖然從我的測試和(不成功)谷歌搜索,這似乎不可能。
任何想法?
這是否適合你創建一個簡單的映射? 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);
}
是的,如果我理解正確,那麼可以這樣做。查看System.Reflection命名空間中的類,從Assembly類及其GetExportedTypes方法開始。這給你一個來自指定程序集公共聲明的System.Type對象的數組 - http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexportedtypes.aspx
感謝。這真的很有幫助,適合我。 – Mike 2010-04-15 23:07:31