Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 /// <summary>
 /// 通过Lambda 得到Lambda函数内部的成员对象
 /// </summary>
 /// <param name="func"></param>
 /// <returns></returns>
 public static MemberInfo Member(Expression <Func <object> > func)
 {
     return(Expressor.Member(func));
 }