SingleDataModelItem.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. protected T GetValue<T>(Expression<Func<TEntity, T>> expression)
  28. {
  29. return Row != null
  30. ? Row.Get(expression, true)
  31. : default(T);
  32. }
  33. }
  34. }