Skip to main content
tags
Link
dfhwze
  • 14.2k
  • 3
  • 40
  • 101
added 287 characters in body
Source Link
public abstract class PropertyChangeTracker
{
    public static PropertyChangeTracker<TEntity> Create<TEntity>(TEntity entity) where TEntity : class
    {
        return new PropertyChangeTracker<TEntity>(entity);
    }
}

public class PropertyChangeTracker<TEntity> : PropertyChangeTracker where TEntity : class
{
    readonly TEntity entity = null;
    HashSet<PropertyInfo> changedProperties = new HashSet<PropertyInfo>();

    public PropertyChangeTracker(TEntity entity)
    {
        this.entity = entity;
    }

    public void Set<TValue>(Expression<Func<TEntity, TValue>> expression, TValue value)
    {
        var member = (expression.Body as MemberExpression).Member as PropertyInfo;

        changedProperties.Add(member);

        member.SetValue(entity, value);
    }

    public PropertyInfo[] GetChangedProperties()
    {
        return changedProperties.ToArray();
    }
}
var bobJones = PersonRepo.GetPersonById(100);
var tracker = new PropertyChangeTracker<Person>PropertyChangeTracker.Create(bobJones);

tracker.Set(e => e.LastName, "Jones");
tracker.Set(e => e.DateOfBirth, new DateTime(1970, 2, 15));
 
public class PropertyChangeTracker<TEntity> where TEntity : class
{
    TEntity entity = null;
    HashSet<PropertyInfo> changedProperties = new HashSet<PropertyInfo>();

    public PropertyChangeTracker(TEntity entity)
    {
        this.entity = entity;
    }

    public void Set<TValue>(Expression<Func<TEntity, TValue>> expression, TValue value)
    {
        var member = (expression.Body as MemberExpression).Member as PropertyInfo;

        changedProperties.Add(member);

        member.SetValue(entity, value);
    }

    public PropertyInfo[] GetChangedProperties()
    {
        return changedProperties.ToArray();
    }
}
var bobJones = PersonRepo.GetPersonById(100);
var tracker = new PropertyChangeTracker<Person>(bobJones);

tracker.Set(e => e.LastName, "Jones");
tracker.Set(e => e.DateOfBirth, new DateTime(1970, 2, 15));
 
public abstract class PropertyChangeTracker
{
    public static PropertyChangeTracker<TEntity> Create<TEntity>(TEntity entity) where TEntity : class
    {
        return new PropertyChangeTracker<TEntity>(entity);
    }
}

public class PropertyChangeTracker<TEntity> : PropertyChangeTracker where TEntity : class
{
    readonly TEntity entity = null;
    HashSet<PropertyInfo> changedProperties = new HashSet<PropertyInfo>();

    public PropertyChangeTracker(TEntity entity)
    {
        this.entity = entity;
    }

    public void Set<TValue>(Expression<Func<TEntity, TValue>> expression, TValue value)
    {
        var member = (expression.Body as MemberExpression).Member as PropertyInfo;

        changedProperties.Add(member);

        member.SetValue(entity, value);
    }

    public PropertyInfo[] GetChangedProperties()
    {
        return changedProperties.ToArray();
    }
}
var bobJones = PersonRepo.GetPersonById(100);
var tracker = PropertyChangeTracker.Create(bobJones);

tracker.Set(e => e.LastName, "Jones");
tracker.Set(e => e.DateOfBirth, new DateTime(1970, 2, 15));
 
made class name corrections; changed variable casing convention
Source Link
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));
 
public class PropertyChangeTracker<TEntity> where TEntity : class
{
    TEntity Entity = null;
    HashSet<PropertyInfo> ChangedProperties = new HashSet<PropertyInfo>();

    public PropertyChangeTracker(TEntity Entity)
    {
        this.Entity = Entity;
    }

    public void Set<TValue>(Expression<Func<TEntity, TValue>> Expression, TValue Value)
    {
        var Member = (Expression.Body as MemberExpression).Member as PropertyInfo;

        ChangedProperties.Add(Member);

        Member.SetValue(Entity, Value);
    }

    public PropertyInfo[] GetChangedProperties()
    {
        return ChangedProperties.ToArray();
    }
}
var BobJones = PersonRepo.GetPersonById(100);
var Tracker = new EntityChangeTracker<Person>(BobJones);

Tracker.Set(e => e.LastName, "Jones");
Tracker.Set(e => e.DateOfBirth, new DateTime(1970, 2, 15));
 
public class PropertyChangeTracker<TEntity> where TEntity : class
{
    TEntity entity = null;
    HashSet<PropertyInfo> changedProperties = new HashSet<PropertyInfo>();

    public PropertyChangeTracker(TEntity entity)
    {
        this.entity = entity;
    }

    public void Set<TValue>(Expression<Func<TEntity, TValue>> expression, TValue value)
    {
        var member = (expression.Body as MemberExpression).Member as PropertyInfo;

        changedProperties.Add(member);

        member.SetValue(entity, value);
    }

    public PropertyInfo[] GetChangedProperties()
    {
        return changedProperties.ToArray();
    }
}
var bobJones = PersonRepo.GetPersonById(100);
var tracker = new PropertyChangeTracker<Person>(bobJones);

tracker.Set(e => e.LastName, "Jones");
tracker.Set(e => e.DateOfBirth, new DateTime(1970, 2, 15));
 
edited tags
Link
Loading
Source Link
Loading