Q:

Why can't these generic types be inferred?

I have the following code:
public static class CardView {
    public static object Column<TModel, TResult>(Func<TModel, TResult> field) {
        return null;
    }
}

public class Person 
{
    public string Name { get; set; }
    public bool Gender { get; set; }
}

void Main()
{
    var model = new Person() { Name = "Andre", Gender = true };

    var b = CardView.Column(model => model.Name); // ERROR
    // The type arguments for method 'UserQuery.CardView.Column<TModel,TResult>(System.Func<TModel,TResult>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
}

For some reason it's not able to infer the generic types for the Column method. I need to know why. I can't give up the type inference and specify the types myself because it's just a case study for a large problem where it will be indispensable.
EDIT
I misspelled the code =/ just fixed it

A:

In order for the compiler to perform type inference it has to be given some sort of type information.  In this scenario the only information it's provided is an untyped lambda expression.  The compiler really has nothing to go on here.  
There are a couple of ways to resolve this.  The easiest is to add a type to the lambda paramater 
var b = CardView.Column((Person m) => m.Name);

