关于c#:获取任何枚举的方法


Method to take in any Enum

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Create Generic method constraining T to an Enum

是否可以创建接受任何枚举的泛型方法?然后,我将首先检查传入的类型,确保它是一个已传递的枚举(或者我可以通过方法定义自然地强制实现这一点吗?)第二,如果它是一个枚举,那么我将拥有一组case语句,它们根据传递的枚举类型来做一些事情。例如,我可以传递它companycolumns、paycolumns等,它们是枚举。我的方法需要能够接受这样的任何枚举,然后允许我在内部case语句中使用该枚举。

public static dbtype getcolumndatatype(我希望能够传入任何枚举对象)


1
2
3
4
5
6
public static void MyFunction<T>(T en) where T: IComparable, IFormattable, IConvertible
{
    if (!typeof(T).IsEnum)
        throw new ArgumentException("en must be enum type");
    // implementation
}


试试这个:

1
public static DbType GetColumnDataType(Enum en){...}

这不是一般性的,但很有效。

如果需要通用,可以执行以下操作:

1
2
3
4
5
6
7
8
public DbType GetColumnDataType<T>(T en)
{
    Type t = n.getType();
    if (!t.isEnum)
    {
      //through exception
    }
}