我有一些枚举
enum BasicEnum
{
BasicValue1,
BasicValue2
//...
}
我想拥有的东西类似于
public void Foo<TEnum>(TEnum someEnum)
where TEnum : struct, IComparable, IFormattable, IConvertible
{
switch (someEnum)
{
case BasicEnum.BasicValue1:
//...
break;
case BasicEnum.BasicValue2:
//...
break;
}
}
所有
TEnum
类型仅包含BasicEnum
中存在的值。当然,此类代码不会被编译,因此我尝试将其更改为:
public void Foo<TEnum>(TEnum someEnum)
where TEnum : struct, IComparable, IFormattable, IConvertible
{
BasicEnum basicEnum = (BasicEnum)someEnum;
switch (basicEnum)
{
//...
}
}
如预期的那样,我再次遇到错误``无法将类型'TEnum'转换为'BasicEnum''
找到这样的把戏并不难
var value = Convert.ToInt32(someEnum);
var basicValue = (BasicEnum)value;
但是这种解决方案似乎并不是我最喜欢的解决方案。有没有更好的办法?
最佳答案
使用:
( BasicEnum )Enum.ToObject( typeof( BasicEnum ), someEnum )
关于c# - 如何将作为通用参数的Enum转换为另一个Enum?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20245130/