Ich vergleiche zwei Objekte desselben Typs und gebe die Unterschiede in einer Liste von FieldChange
Objekte. Im Moment liste ich die einzelnen Feldvergleiche so auf, was etwas suboptimal erscheint.
Gibt es eine sauberere Möglichkeit, den nachstehenden Code so umzugestalten, dass die Wiederholungen vermieden werden? Es gibt zwei Sätze von Code unten, aber in Wirklichkeit habe ich etwa 20 Vergleiche.
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 });
}
HINWEIS: alle Objekte sind von demselben Objekt namens BaseObj abgeleitet. Beachten Sie auch, dass ich nicht nur die Werte der vergleichbaren Felder in das FieldChange-Objekt einfüge (Eigenschaft id versus Name)