当前位置:  开发笔记 > 小程序 > 正文

如何重新考虑此代码?

如何解决《如何重新考虑此代码?》经验,为你挑选了1个好方法。

我正在使用以下函数将DataTable(从数据层传递)中的列映射到对象属性.该函数存在于我正在填充的类中.该类有两个方法:Load()使用值加载对象,LoadAll()返回已填充对象的集合.我希望能够使用相同的代码来填充当前对象或新对象.然而,我对结果不太满意,主要是因为重复这是一个维护噩梦.

Private Function MapDataRowToProperties(ByVal dr As DataRow, ByVal target As Incident) As Incident
            If target.Equals(Me) Then
               Me.ID = Convert.ToInt32(dr.Item("pkIncidentID"))
               Me.Description = dr.Item("IncidentDetail").ToString
               Me.Created = Convert.ToDateTime(dr.Item("CreatedOn"))
               ...
               Return Me
           Else
              Dim NewIncident As New Incident
              NewIncident.ID = Convert.ToInt32(dr.Item("pkIncidentID"))
              NewIncident.Description = dr.Item("IncidentDetail").ToString
              NewIncident.Created = Convert.ToDateTime(dr.Item("CreatedOn"))
              ...
              Return NewIncident
           End If

    End Function

注意:我很清楚ORM工具会为我做这个,我通常使用EntitySpaces,但对于这个项目,我无法这样做.



1> ggf31416..:

怎么样 :

dim Inc as Incident 
if target.Equals(me) then 
   Inc = Me
else
   Inc = new Incident
end if 
'Other code'
return Inc

OTOH如果target.Equals(me)应该只匹配当前对象(在这种情况下你应该使用Is或ReferenceEquals,因为Equals可以被覆盖以返回其他对象的True)并且你正在传递一个新事件(或者目标可以在第二种情况下,然后删除if并直接使用目标.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有