科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道VB中运用反射原理优化程序代码

VB中运用反射原理优化程序代码

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在这个项目里我负责的部分是读取某子系统从数据库导出来的两个XML(不妨假设为A.XML和B.XML)文件并根据文件内容完成本部分的业务工作流程

作者:张晓明 来源:天极开发 2007年10月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

你也可能抱怨我上面的百分数计算太不科学,要算也应该拿全部来算,那就不妙了,好吧,看来也只能拿十分“老的““成熟“的来开刀了,下面便是削减代码二期工程,我们的目标是让成熟变干练,太过成熟的确不合某些同志的胃口。对应于AB两文件的类clsA/B,分别至少有30和15个属性,还好,也不过就一二百行代码就搞定,更简单点就用自己写的代码生成器,一次性生成所有属性,并不会很麻烦。不过还是有更好(准确使更精简)的解决办法,用一个通用类,十分之一的代码(实际应用中会更少)就可以做到。

  这其实不过是一个继承了字典的子类,如下:

Public Class clsCommon
 Inherits System.Collections.DictionaryBase
 Public Sub AddField(ByVal FieldName As String, ByVal value As Object)
 Dictionary.Add(FieldName, value)
End Sub

Default Public Property Item(ByVal key As String) As Object
 Get
  Return Dictionary.Item(key)
 End Get
 Set(ByVal value As Object)
  Dictionary.Item(key) = value
 End Set
End Property
End Class

  这个通用类提供两个基本的方法,意义显而易见,而其对应的集合类基本还是原来那个样子:

Public Class clscolCommon
 Inherits System.Collections.CollectionBase
 Public Function GenerateAson() As clsCommon
End Function

Public Sub AddSon(ByVal objSon As clsCommon)
End Sub
Public Sub Sort()
End Sub
'默认Item属性以及更多Method从略
End Class

  不过这时候赋值过程也需要更改一下:

With xmlGetList(NodeName, strPath)
 For i As Integer = 0 To .Count - 1
  Dim st As Object = objFather.GenerateAson
  With DirectCast(.Item(i), XmlElement)
   For Each ch As XmlNode In .ChildNodes
    St.AddField(ch.Name,ch.InnerText)
   Next
  End With
  objFather.AddSon(st)
 Next
End With

  本文至此,削减代码工程算是小有成就,如果真要计算削减了多少,我想还是能够对得起这个标题的,而关于如何回写文件,必然也仍然是反射,肯定有更好的办法,在这里就不赘述了。

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章