Вам нужно привести к int
, а не T
. И вам на самом деле не нужен параметр Type
(если вы не знаете тип во время компиляции), так как вы можете просто сделать typeof(T)
:
private static int GetMaxValue<T>()
{
return Enum.GetValues(typeof(T)).Cast<int>().Max();
}
// usage:
GetMaxValue<SomeEnum>() // 2
Если ваши перечисления имеют long
или какой-либо другой тип в качестве базового типа, вы можете указать другой параметр типа для приведения их к:
private static U GetMaxValue<T, U>() where U : struct
{
return Enum.GetValues(typeof(T)).Cast<U>().Max();
}
// usage:
GetMaxValue<SomeLongEnum, long>()