将整数转换为具有不同基础类型的通用枚举类型

cast integer to generic enum types that have a different underlying type

以下函数仅在参数类型与T的基础类型相同时有效。我怎样才能让它适用于所有枚举? (我不关心缩小或扩大)

public T Cast<T>(int i) where T : Enum
{
  return (T)(object)i;
}

你可以这样做,例如:

public static T Cast<T>(int i) where T : Enum {
    return (T)Convert.ChangeType(i, Enum.GetUnderlyingType(typeof(T)));
}