首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Type的数组/列表/目录

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

Stack Overflow用户
提问于 2010-04-16 06:30:33
回答 2查看 458关注 0票数 0

我有很多类,我想创建一个“目录”。

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

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

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

尽管从我的测试和(不成功的)谷歌搜索来看,这似乎是不可能的。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-16 06:42:38

这对您创建一个简单的映射有效吗?ArrayList不是通用的,但您可以在其中创建一个自定义对象。

代码语言:javascript
复制
var mapper = new System.Collections.Generic.Dictionary<string, System.Type>();   
mapper.Add("show-about-box", typeof(MyApp.Forms.AboutBox));

然后,您可以使用refleciton来创建类的实例,使用如下代码:

代码语言:javascript
复制
// 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
EN

Stack Overflow用户

发布于 2010-04-16 06:36:07

是的,如果我没理解错的话,这是可以做到的。从System.Reflection类及其GetExportedTypes方法开始,看一下程序集名称空间中的类。这为您提供了一个从指定的System.Type - http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexportedtypes.aspx中公开声明的程序集对象的数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2649431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档