我正在比较相同类型的两个对象并将差异返回到FieldChange
对象列表中。现在我列出了每个字段比较,这似乎有点不理想。
有没有更简洁的方法来重构下面的代码以避免重复?下面有两组代码,但实际上我有大约 20 个比较。
var changes = new List<FieldChange>();
if (proposedUpdatedProject.StatusId != existingProject.StatusId)
{
var previousStatusName = existingProject.StatusShortName;
existingProject.Status = ProjectModel.Repository.Fetch<ProjectStatus>(proposedUpdatedProject.StatusId);
changes.Add(new FieldChange { FieldName = "Status", PreviousValue = previousStatusName, NewValue = existingProject.StatusShortName });
}
if (proposedUpdatedProject.TechOwnerId != existingProject.TechOwnerId)
{
var previousTechOwnerName = existingProject.TechOwnerName;
existingProject.TechOwner = ProjectModel.Repository.Fetch<Person>(proposedUpdatedProject.TechOwnerId);
changes.Add(new FieldChange { FieldName = "Tech Owner", PreviousValue = previousTechOwnerName, NewValue = existingProject.TechOwnerName });
}
注意:所有对象都派生自同一个名为 BaseObj 的对象。另请注意,我不只是将可比较字段的值放入 FieldChange 对象(id 与 Name 属性)