C#-泛型枚举类型转换

C#-泛型枚举类型转换,c#,generics,enums,C#,Generics,Enums,关于使用Enums的泛型类,我有几个问题 首先,我这样宣布我的班级: public class MyClass<TEnum> where TEnum : struct, IConvertible 谢谢。您已经声明了您的泛型类型参数以实现IConvertible,并且该接口具有ToInt32方法。自从声明了需求IConvertible之后,您已经拥有了所需的内容。只需使用ToInt32等方法: public class MyClass<TEnum> where TEnum

关于使用
Enum
s的泛型类,我有几个问题

首先,我这样宣布我的班级:

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

谢谢。

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

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

public class MyClass<TEnum> where TEnum: struct, IConvertible
{        
    public int SomeMethod(TEnum value)
    {
        return value.ToInt32(null);
    }
}
公共类MyClass其中TEnum:struct,IConvertible
{        
公共整数方法(TEnum值)
{
返回值.ToInt32(空);
}
}
例如.NET类型decimal是一个结构和一个IConvertable:

MyClass<decimal> test = new MyClass<decimal>();
Console.WriteLine(test.SomeMethod(150m));
MyClass测试=新建MyClass();
控制台写入线(测试方法(150m));

对于其他类,请确保实现IConvertible。

对于第一部分,请参见此处的枚举位置?对于第二部分,不能在函数内部重新声明
值,因为它已经是一个参数。嘿,我从VBForums认识你,呵呵。我记得你的狗阿凡达!无论如何,ToInt32需要一些FormatProvider。。。?此外,ToInt32使用Convert。使用Convert.ToInt32(value)不是更容易吗?对于参数值,您应该可以简单地使用
null
。您可能也可以轻松地使用
Convert.ToInt32
MyClass<decimal> test = new MyClass<decimal>();
Console.WriteLine(test.SomeMethod(150m));