根据类名称的一部分来确定类

geyewei 2014-12-09 02:30:21
先简单地描述一下吧。
在一个工程里面有若干窗体和若干类,类是按照 前缀+任意文字串 的规则来决定的,前缀部分不会重复。
在程序启动的时候,可以得到一个用户输入的字符串,如果工程内的某个窗体类的名称的前面部分和这个字符串相同的话,就显示这个窗体。
现在我写了一段代码来实现查找窗体的功能,可是其中有两行不满意的地方,请问能不能把这两行注释为不满意的代码用一个函数来替换呢?或者不管代码给点其他的解决思路也行。
代码如下。(简化了一下,并且删除了错误处理)
            Dim gsAutoOpenFormID As String = "TF9001" '假设用户想要打开[TF9001小实验]这个窗体
Dim AutoOpenFormType As Type = Nothing
If gsAutoOpenFormID <> "" Then
For Each theType As Type In System.Reflection.Assembly.GetExecutingAssembly.GetTypes '不满意
If theType.Name.StartsWith(gsAutoOpenFormID, StringComparison.CurrentCultureIgnoreCase) Then '不满意
If theType.IsSubclassOf(GetType(Form)) Then
AutoOpenFormType = theType
Exit For
End If
End If
Next
End If
If AutoOpenFormType IsNot Nothing Then
fMainForm = Activator.CreateInstance(AutoOpenFormType)
End If

...全文
141 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfybs 2014-12-12
  • 打赏
  • 举报
回复
什么是映射表啊,好高端的样子。。。
zixingcheng_ 2014-12-10
  • 打赏
  • 举报
回复
所谓的search不过是已经封装好的,你写的也是个 search的也是个,没啥本质区别,需要你把这个封装下然后复用,就是一回事。 建议你弄好命名规则然后在用反射,再不行做个映射表,如果窗体就百来个,现在的方法也没啥太大的问题。
geyewei 2014-12-09
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
你如果无法知道完整名称,就只能去遍历匹配,还能有什么办法.
是的,不能保证是完整名称。 要是能够改成像System.IO.Directory.GetFiles(path, searchPattern)那样,可以利用searchPattern就好了。
geyewei 2014-12-09
  • 打赏
  • 举报
回复
引用 2 楼 xiaobingking 的回复:
用反射,但是运行效率会差一点
是啊,现在的代码用的就是反射呢。
於黾 2014-12-09
  • 打赏
  • 举报
回复
你如果无法知道完整名称,就只能去遍历匹配,还能有什么办法.
红衣老大 2014-12-09
  • 打赏
  • 举报
回复
用反射,但是运行效率会差一点
geyewei 2014-12-09
  • 打赏
  • 举报
回复
在线等待中。。。等到六点。

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧