NullResultBehavior.cs 804 B

12345678910111213141516171819202122232425262728293031
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace Masuit.Tools.Dynamics.Behaviors;
  5. internal class NullResultBehavior : ClayBehavior
  6. {
  7. /// <inheritdoc />
  8. public override object GetMember(Func<object> proceed, object self, string name)
  9. {
  10. return proceed() ?? NullInstance.Instance;
  11. }
  12. /// <inheritdoc />
  13. public override object GetIndex(Func<object> proceed, object self, IEnumerable<string> keys)
  14. {
  15. return proceed() ?? NullInstance.Instance;
  16. }
  17. /// <inheritdoc />
  18. public override object InvokeMember(Func<object> proceed, object self, string name, INamedEnumerable<object> args)
  19. {
  20. if (args.Any())
  21. {
  22. return proceed();
  23. }
  24. return proceed() ?? NullInstance.Instance;
  25. }
  26. }