隐式定义的泛型类型,这可能吗?

Implicit defined generic types, is this possible?

我目前想写一个通用的扩展方法。如果参数中每个泛型都可用,我就不需要定义泛型了:

//Extension Method
public static GridBoundColumnBuilder<TModel>
     BoundEnum<TModel, TValue>(this GridColumnFactory<TModel> factory,
         Expression<Func<TModel, TValue>> expression);

//I can call It this way, whitout setting <TModel, TValue>
columns.BoundEnum(c => c.SomeProp);

如果我想添加一个泛型,它没有包含在参数中,我需要设置 <TModel, TValue>:

//Extension Method
public static GridBoundColumnBuilder<TModel>
    BoundEnum<TModel, TValue, TEnum>(this GridColumnFactory<TModel> factory,
         Expression<Func<TModel, TValue>> expression)

//How it works:
columns.BoundEnum<TModel, TValue, TEnum>(c => c.SomeProp);

有没有办法只能这样写?

columns.BoundEnum<TEnum>(c => c.SomeProp);

编辑:这是完整的方法:

public static GridBoundColumnBuilder<TModel>
     BoundEnum<TModel, TValue, TEnum>(this GridColumnFactory<TModel> factory,
              Expression<Func<TModel, TValue>> expression)
    where TModel : class
    where TEnum : struct, IComparable
{
    return factory.ForeignKey(expression, EnumHelper.ToSelectList<TEnum>());
}

如果编译器无法推断出所有泛型类型,那么您必须将它们全部传递。不支持部分推理。