TweenMember.cs 918 B

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.Linq.Expressions;
  3. namespace MonoGame.Extended.Tweening
  4. {
  5. public abstract class TweenMember
  6. {
  7. protected TweenMember(object target)
  8. {
  9. Target = target;
  10. }
  11. public object Target { get; }
  12. public abstract Type Type { get; }
  13. public abstract string Name { get; }
  14. }
  15. public abstract class TweenMember<T> : TweenMember
  16. where T : struct
  17. {
  18. protected TweenMember(object target, Func<object, T> getMethod, Action<object, T> setMethod)
  19. : base(target)
  20. {
  21. _getMethod = getMethod;
  22. _setMethod = setMethod;
  23. }
  24. private readonly Func<object, T> _getMethod;
  25. private readonly Action<object, T> _setMethod;
  26. public T Value
  27. {
  28. get { return _getMethod(Target); }
  29. set { _setMethod(Target, value); }
  30. }
  31. }
  32. }