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();
}