接受任何枚举的方法

时间:2012-10-22 18:47:34

标签: c#

  

可能重复:
  Create Generic method constraining T to an Enum

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

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

2 个答案:

答案 0 :(得分:7)

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 :(得分:1)

试试这个:

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

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

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

public DbType GetColumnDataType<T>(T en)
{
    Type t = n.getType();
    if (!t.isEnum)
    {
      //through exception 
    }
}