private object GetMemberValue(object o, string memberName) { MemberInfo[] memberInfos = o.GetType().GetMember(memberName); if (memberInfos == null) { throw new InvalidOperationException("cannot find member:" + memberName); } var memberInfo = memberInfos[0]; object memberValue = GetMemberValue(o, memberInfo); return memberValue; }