private static object GetUnderlyingObject()

in src/main/csharp/Util/IntrospectionSupport.cs [389:430]


		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(string.Format(
						"The field given is a primitive type: {0}",
						member.Name));
				}

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

				if(getter == null)
				{
					throw new NMSException(string.Format(
						"Cannot access member: {0}",
						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;
		}