private static void ValidateAnonymousTypeMember(ref MemberInfo member, out Type memberType) { var field = member as FieldInfo; if (field != null) { if (field.IsStatic) { throw Error.ArgumentMustBeInstanceMember(); } memberType = field.FieldType; return; } var pi = member as PropertyInfo; if (pi != null) { if (!pi.CanRead) { throw Error.PropertyDoesNotHaveGetter(pi); } if (pi.GetGetMethod().IsStatic) { throw Error.ArgumentMustBeInstanceMember(); } memberType = pi.PropertyType; return; } var method = member as MethodInfo; if (method != null) { if (method.IsStatic) { throw Error.ArgumentMustBeInstanceMember(); } var prop = GetProperty(method); member = prop; memberType = prop.PropertyType; return; } throw Error.ArgumentMustBeFieldInfoOrPropertInfoOrMethod(); }
private static void ValidateAnonymousTypeMember(ref MemberInfo member, out Type memberType, string paramName, int index) { FieldInfo field = member as FieldInfo; if (field != null) { if (field.IsStatic) { throw Error.ArgumentMustBeInstanceMember(paramName, index); } memberType = field.FieldType; return; } PropertyInfo pi = member as PropertyInfo; if (pi != null) { if (!pi.CanRead) { throw Error.PropertyDoesNotHaveGetter(pi, paramName, index); } if (pi.GetGetMethod().IsStatic) { throw Error.ArgumentMustBeInstanceMember(paramName, index); } memberType = pi.PropertyType; return; } MethodInfo method = member as MethodInfo; if (method != null) { if (method.IsStatic) { throw Error.ArgumentMustBeInstanceMember(paramName, index); } PropertyInfo prop = GetProperty(method, paramName, index); member = prop; memberType = prop.PropertyType; return; } throw Error.ArgumentMustBeFieldInfoOrPropertyInfoOrMethod(paramName, index); }
//CONFORMING private static void ValidateAnonymousTypeMember(ref MemberInfo member, out Type memberType) { switch (member.MemberType) { case MemberTypes.Field: FieldInfo field = member as FieldInfo; if (field.IsStatic) { throw Error.ArgumentMustBeInstanceMember(); } memberType = field.FieldType; break; case MemberTypes.Property: PropertyInfo pi = member as PropertyInfo; if (!pi.CanRead) { throw Error.PropertyDoesNotHaveGetter(pi); } if (pi.GetGetMethod().IsStatic) { throw Error.ArgumentMustBeInstanceMember(); } memberType = pi.PropertyType; break; case MemberTypes.Method: MethodInfo method = member as MethodInfo; if (method.IsStatic) { throw Error.ArgumentMustBeInstanceMember(); } PropertyInfo prop = GetProperty(method); member = prop; memberType = prop.PropertyType; break; default: throw Error.ArgumentMustBeFieldInfoOrPropertInfoOrMethod(); } }