public static MemberExpression Field(Expression expression, Type type, string fieldName)
{
ContractUtils.RequiresNotNull(type, nameof(type));
// bind to public names first
FieldInfo fi = type.GetField(fieldName, BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.FlattenHierarchy)
?? type.GetField(fieldName, BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase | BindingFlags.FlattenHierarchy);
if (fi == null)
{
throw Error.FieldNotDefinedForType(fieldName, type);
}
return(Expression.Field(expression, fi));
}