Sim*_*mon 1 .net vb.net refactoring
我正在使用以下函数将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
Run Code Online (Sandbox Code Playgroud)
注意:我很清楚ORM工具会为我做这个,我通常使用EntitySpaces,但对于这个项目,我无法这样做.
怎么样 :
dim Inc as Incident
if target.Equals(me) then
Inc = Me
else
Inc = new Incident
end if
'Other code'
return Inc
Run Code Online (Sandbox Code Playgroud)
OTOH如果target.Equals(me)应该只匹配当前对象(在这种情况下你应该使用Is或ReferenceEquals,因为Equals可以被覆盖以返回其他对象的True)并且你正在传递一个新事件(或者目标可以在第二种情况下,然后删除if并直接使用目标.
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |