2
我目前想写一个通用的扩展方法。如果每一个泛型类型是在参数菱,我不需要定义泛型类型:隐式定义的泛型类型,这可能吗?
//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>());
}
简版:没有。 C#参考(你读过的)对我来说似乎足够清晰;如果推论不可行,您必须提供所有类型。这就是说,你不清楚你在问什么。在你的代码示例中,'TEnum'类型看起来并不实际使用。那么它有什么意义呢?你最近想做什么? –
你可以有[double hop](http://stackoverflow.com/a/34930742):'columns.BoundExpression(c => c.SomeProp).BoundEnum()'。 –
PetSerAl
我基本上想要在我的扩展方法中获取枚举的类型。我没有显示完整的方法。 @PetSerAl'EnumHelper.ToSelectList'给了我一个选择列表与枚举的描述属性 –