public class PropertyChangeTracker<TEntity> where TEntity : class
{
TEntity Entityentity = null;
HashSet<PropertyInfo> ChangedPropertieschangedProperties = new HashSet<PropertyInfo>();
public PropertyChangeTracker(TEntity Entityentity)
{
this.Entityentity = Entity;entity;
}
public void Set<TValue>(Expression<Func<TEntity, TValue>> Expressionexpression, TValue Valuevalue)
{
var Membermember = (Expressionexpression.Body as MemberExpression).Member as PropertyInfo;
ChangedPropertieschangedProperties.Add(Membermember);
Membermember.SetValue(Entityentity, Valuevalue);
}
public PropertyInfo[] GetChangedProperties()
{
return ChangedPropertieschangedProperties.ToArray();
}
}
var BobJonesbobJones = PersonRepo.GetPersonById(100);
var Trackertracker = new EntityChangeTracker<Person>PropertyChangeTracker<Person>(BobJonesbobJones);
Trackertracker.Set(e => e.LastName, "Jones");
Trackertracker.Set(e => e.DateOfBirth, new DateTime(1970, 2, 15));