DbMemberExpression.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Reflection;
  3. using Ant.Extensions;
  4. namespace Ant.DbExpressions
  5. {
  6. public class DbMemberExpression : DbExpression
  7. {
  8. MemberInfo _member;
  9. DbExpression _exp;
  10. public DbMemberExpression(MemberInfo member, DbExpression exp)
  11. : base(DbExpressionType.MemberAccess)
  12. {
  13. if (member.MemberType != MemberTypes.Property && member.MemberType != MemberTypes.Field)
  14. throw new ArgumentException();
  15. this._member = member;
  16. this._exp = exp;
  17. }
  18. public override Type Type
  19. {
  20. get
  21. {
  22. return this._member.GetPropertyOrFieldType();
  23. }
  24. }
  25. public MemberInfo Member
  26. {
  27. get { return this._member; }
  28. }
  29. /// <summary>
  30. /// 字段或属性的包含对象
  31. /// </summary>
  32. public DbExpression Expression
  33. {
  34. get { return this._exp; }
  35. }
  36. public override T Accept<T>(DbExpressionVisitor<T> visitor)
  37. {
  38. return visitor.Visit(this);
  39. }
  40. }
  41. }