Вам нужно указать общие аргументы для вызова, вот и все:
string s = t.Property<TestChild, string>(x => x.Name);
EDIT:
Моя вина. Я пропустил реальную проблему:
public static string Property<TModel, TProperty>(this TModel model, Expression<Func<TModel, TProperty>> property)
{
return property.ToString();
}
Это должно сделать так, чтобы вы могли опускать общие аргументы. Я предполагаю, что вы также обрабатываете реальный код в этом методе, чтобы получить имя свойства? Если нет, то вы можете захотеть это:
public static string Property<TModel, TProperty>(this TModel model, Expression<Func<TModel, TProperty>> property)
{
var memberExpression = property.Body as MemberExpression;
return memberExpression.Member.Name;
}