System.Type的数组/列表/目录

时间:2010-04-15 22:30:33

标签: c# .net mono

我有很多课程,想要创建某种“目录”。

这样我就可以自动创建菜单了。

然后单击一个菜单项将创建该类的实例并显示该窗口。

我想要的是一个System.Type数组,我可以在其中填充所有类而无需实例化它们。

虽然从我的测试和(不成功)谷歌搜索,这似乎不可能。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

是的,如果我理解正确,可以做到。查看System.Reflection命名空间中的类,从Assembly类及其GetExportedTypes方法开始。这将为您提供来自指定程序集的公共声明的System.Type对象数组 - http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexportedtypes.aspx

答案 1 :(得分: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);
}