我正在比較兩個相同類型的對象,並將差異返回到FieldChange
對象的列表中。現在我列出每個字段的比較,這似乎有點不理想。有沒有辦法讓這個C#比較代碼更通用?
有沒有更清晰的方式來重構下面的代碼以避免重複?下面有兩組代碼,但實際上我有大約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屬性)
你可能想給[codereview.se]一個嘗試... – Adam 2012-07-08 16:50:14