IClayBehavior.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. namespace Masuit.Tools.Dynamics;
  5. public interface IClayBehavior
  6. {
  7. object GetMember(Func<object> proceed, object self, string name);
  8. object SetMember(Func<object> proceed, object self, string name, object value);
  9. object InvokeMember(Func<object> proceed, object self, string name, INamedEnumerable<object> args);
  10. object GetIndex(Func<object> proceed, object self, IEnumerable<string> keys);
  11. object SetIndex(Func<object> proceed, object self, IEnumerable<string> keys, object value);
  12. object GetMembers(Func<object> proceed, object self, IDictionary<string, object> members);
  13. object Convert(Func<object> proceed, object self, Type type, bool isExplicit);
  14. object BinaryOperation(Func<object> proceed, object self, ExpressionType operation, object value);
  15. object InvokeMemberMissing(Func<object> proceed, object self, string name, INamedEnumerable<object> args);
  16. object GetMemberMissing(Func<object> proceed, object self, string name);
  17. object SetMemberMissing(Func<object> proceed, object self, string name, object value);
  18. object ConvertMissing(Func<object> proceed, object self, Type type, bool isExplicit);
  19. }
  20. public interface INamedEnumerable<T> : IEnumerable<T>
  21. {
  22. IEnumerable<T> Positional { get; }
  23. IDictionary<string, T> Named { get; }
  24. }