public static MemberExpression Field(Expression expression, FieldInfo field)
{
ContractUtils.RequiresNotNull(field, nameof(field));
if (field.IsStatic)
{
if (expression != null)
{
throw Error.OnlyStaticFieldsHaveNullInstance(nameof(expression));
}
}
else
{
if (expression == null)
{
throw Error.OnlyStaticFieldsHaveNullInstance(nameof(field));
}
RequiresCanRead(expression, nameof(expression));
if (!TypeUtils.AreReferenceAssignable(field.DeclaringType, expression.Type))
{
throw Error.FieldInfoNotDefinedForType(field.DeclaringType, field.Name, expression.Type);
}
}
return(MemberExpression.Make(expression, field));
}