SingleDataModelItem.cs 949 B

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. using System.Linq.Expressions;
  3. using System.Runtime.CompilerServices;
  4. using InABox.Core;
  5. namespace comal.timesheets
  6. {
  7. public abstract class SingleDataModelItem<TEntity> : CoreDataModelItem
  8. where TEntity : Entity, IRemotable, IPersistent, new()
  9. {
  10. public TEntity Entity { get; private set; }
  11. protected override void RowChanged()
  12. {
  13. base.RowChanged();
  14. Entity = Row.ToObject<TEntity>();
  15. }
  16. protected void UpdateValue<T>(Expression<Func<TEntity, T>> expression, T value, bool notify = true, [CallerMemberName] string propertyName = "" )
  17. {
  18. Row.Set(expression, value);
  19. CoreUtils.SetPropertyValue(
  20. Entity,
  21. CoreUtils.GetFullPropertyName(expression, "."),
  22. value
  23. );
  24. if (notify)
  25. DoPropertyChanged(propertyName);
  26. }
  27. }
  28. }