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);
}
}
}