Apache.NMS.ActiveMQ.Util.IntrospectionSupport.GetUnderlyingObject C# (CSharp) Method

GetUnderlyingObject() private static method

private static GetUnderlyingObject ( MemberInfo member, object target ) : object
member System.Reflection.MemberInfo
target object
return object
        private static object GetUnderlyingObject(MemberInfo member, object target)
        {
            object result = null;

            if(member.MemberType == MemberTypes.Field)
            {
                FieldInfo field = member as FieldInfo;

                if(field.FieldType.IsPrimitive)
                {
                    throw new NMSException("The field given is a priomitive type: " + member.Name);
                }

                result = field.GetValue(target);
            }
            else
            {
                PropertyInfo property = member as PropertyInfo;
                MethodInfo getter = property.GetGetMethod();

                if(getter == null)
                {
                    throw new NMSException("Cannot access member: " + member.Name);
                }

                result = getter.Invoke(target, null);
            }

            if(result == null)
            {
                throw new NMSException(String.Format("Could not retrieve the value of member {0}."), member.Name);
            }

            return result;
        }