using System; using System.Reflection; using Ant.Extensions; namespace Ant.DbExpressions { public class DbMemberExpression : DbExpression { MemberInfo _member; DbExpression _exp; public DbMemberExpression(MemberInfo member, DbExpression exp) : base(DbExpressionType.MemberAccess) { if (member.MemberType != MemberTypes.Property && member.MemberType != MemberTypes.Field) throw new ArgumentException(); this._member = member; this._exp = exp; } public override Type Type { get { return this._member.GetPropertyOrFieldType(); } } public MemberInfo Member { get { return this._member; } } /// /// 字段或属性的包含对象 /// public DbExpression Expression { get { return this._exp; } } public override T Accept(DbExpressionVisitor visitor) { return visitor.Visit(this); } } }