ViewModelBase{TModel}.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics.CodeAnalysis;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace ShakerService.ViewModel
  8. {
  9. internal abstract class ViewModelBase<TModel> : ViewModelBase where TModel :IModel.IModel
  10. {
  11. public virtual bool AllowSave => true;
  12. public ViewModelBase():base()
  13. {
  14. if(typeof(TModel).IsAnsiClass && !typeof(TModel).IsAbstract)
  15. {
  16. ReadModel();
  17. SetFpga();
  18. if (AllowSave)
  19. {
  20. Communication.Instance.Context.GetEvent<TModel>()?.Subscrip((sender, args) =>
  21. {
  22. UpModel(args.Data);
  23. });
  24. }
  25. }
  26. }
  27. private protected virtual void ReadModel()
  28. {
  29. }
  30. private protected virtual void UpModel(TModel model)
  31. {
  32. CurrentModel = model;
  33. SetFpga();
  34. SaveModel();
  35. }
  36. private protected virtual void SaveModel()
  37. {
  38. }
  39. [AllowNull]
  40. public TModel CurrentModel { get; private protected set; }
  41. }
  42. }