C# - 通用枚举类型转换

时间:2014-08-05 05:29:35

标签: c# generics enums

我对Enum s。

的泛型类有几个问题

首先,我宣布我的课程是这样的:

public class MyClass<TEnum> where TEnum : struct, IConvertible

但是,我收到一条错误,指出我的类不能与类型参数一起使用。

此外,我需要将Enum的值转换为Integer。我怎么能这样做?

public void SomeMethod(TEnum value)
{
    int a = (int)value; // Doesn't work, need to cast to Enum first (?).
}

感谢。

2 个答案:

答案 0 :(得分:1)

自您声明要求IConvertible以来,您已经拥有了所需的内容。只需使用ToInt32等方法:

public class MyClass<TEnum> where TEnum: struct, IConvertible
{        
    public int SomeMethod(TEnum value)
    {
        return value.ToInt32(null);
    }
}

例如.NET类型decimal是一个结构和一个IConvertble:

MyClass<decimal> test = new MyClass<decimal>();
Console.WriteLine(test.SomeMethod(150m));

对于其他课程,请确保您实施IConvertible。

答案 1 :(得分:0)

您已声明您的通用类型参数以实现IConvertible,并且该接口具有ToInt32方法。