我正在使用以下函数将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,但对于这个项目,我无法这样做.
怎么样 :
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并直接使用目标.