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