4

可能重复:
创建将 T 限制为枚举的通用方法

是否可以创建一个接受任何枚举的通用方法?然后,我将检查传入的类型,首先确保它是一个已通过的枚举(或者我可以通过方法定义自然地强制执行它吗?)其次,如果它是一个枚举,我将有一堆 case 语句来做一些事情基于传递的枚举类型。因此,例如,我可以将 CompanyColumns、PayColumns 等作为枚举传递给它。我的方法需要能够采用这样的任何枚举,然后允许我在内部案例语句中使用枚举。

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

4

2 回答 2

9
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
}
于 2012-10-22T18:52:43.720 回答
4

试试这个:

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

这不是通用的,但工作得很好。

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

public DbType GetColumnDataType<T>(T en)
{
    Type t = n.getType();
    if (!t.isEnum)
    {
      //through exception 
    }
}
于 2012-10-22T18:51:26.383 回答