private static MemberInfo GetMember <T>(Expression <Func <T, object> > fnMember) { Guard.NotNull(fnMember, "fnMember"); var member = Expressor.Member(fnMember); Guard.NotNull(member, "member"); var f = member as FieldInfo; if (f != null) { if (f.IsInitOnly) { throw new ArgumentException(string.Format("Field '{0}.{1}' must be can read and write!", typeof(T).Name, f.Name)); } return(f); } var p = member as PropertyInfo; if (p != null) { if (!p.CanRead || !p.CanWrite) { throw new ArgumentException(string.Format("Property '{0}.{1}' must be can read and write!", typeof(T).Name, p.Name)); } return(p); } throw new ArgumentException(string.Format("'{0}.{1}' must be field or property", typeof(T).Name, member.Name)); }
/// <summary> /// 通过Lambda 得到Lambda函数内部的成员对象 /// </summary> /// <param name="func"></param> /// <returns></returns> public static MemberInfo Member(Expression <Func <object> > func) { return(Expressor.Member(func)); }