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'給了我一個選擇列表與枚舉的描述屬性 –