C# 如何检查对象是否为枚举

C# 如何检查对象是否为枚举,c#,.net,types,C#,.net,Types,我有一个SQL查询生成器方法: public static string PreprocessSQL(string sql, params object[] args) 如果sql参数为“String.Format-friendly”,则此方法循环遍历参数并将其插入查询字符串,根据参数类型执行任何需要执行的操作-将null转换为字符串“null”,将字符串用单引号括起来,等等 现在的问题是枚举。我需要一个逻辑来检查当前args[I]的类型是否为Enum,如果是,则将其转换为int。如何进行此

我有一个SQL查询生成器方法:

public static string PreprocessSQL(string sql, params object[] args) 
如果sql参数为“String.Format-friendly”,则此方法循环遍历参数并将其插入查询字符串,根据参数类型执行任何需要执行的操作-将null转换为字符串“null”,将字符串用单引号括起来,等等

现在的问题是枚举。我需要一个逻辑来检查当前args[I]的类型是否为Enum,如果是,则将其转换为int。如何进行此检查?出于某种原因,我的第一个猜测不起作用:

if(args[i].GetType() == typeof(Enum)) {
    converted.Add((int)args[i]);
}
上述条件显然被评估为false

我的枚举类是:

public enum Priority {
    Low,
    Normal,
    High
}
如果传递的值是Priorty.Normal,那么我认为“value”是Normal,并且该值的类型是Priority,它自动从Enum继承,所以我就完成了。事实证明并不是那个么简单,从我所知道的来看,正常值的类型实际上是优先级。正常

现在我可以显式地检查我在项目中使用的所有枚举,实际上只有2个类,但这会起作用吗

if(args[i].GetType() == typeof(Priority)) { ... }
我的意思是,若args[I]的类型是Priority.Normal,那个么它也会被计算为false

如何检查未知的
对象是否具有枚举类的类型?

试试这个

 bool isEnum = o is Enum;
试试这个

 bool isEnum = o is Enum;
试试这个

 bool isEnum = o is Enum;
试试这个

 bool isEnum = o is Enum;

您可以检查IsEnum属性

args[i].GetType().IsEnum


您可以检查IsEnum属性

args[i].GetType().IsEnum


您可以检查IsEnum属性

args[i].GetType().IsEnum


您可以检查IsEnum属性

args[i].GetType().IsEnum


您可以利用
System.Type

bool isEnum = typeof(YourType).IsEnum

您可以利用
System.Type

bool isEnum = typeof(YourType).IsEnum

您可以利用
System.Type

bool isEnum = typeof(YourType).IsEnum

您可以利用
System.Type

bool isEnum = typeof(YourType).IsEnum

你花了很多时间写这个漂亮的问题。如果你花了一半的时间搜索,你可能会更快地找到你的答案。你可能会重复花了很多时间写这个漂亮的问题。如果你花了一半的时间搜索,你可能会更快地找到你的答案。你可能会重复花了很多时间写这个漂亮的问题。如果你花了一半的时间搜索,你可能会更快地找到你的答案。你可能会重复花了很多时间写这个漂亮的问题。如果你花了一半的时间搜索,你可能会更快地找到答案。@DanAndrews和我认为你指的是java。在.Net中,我们使用
is
关键字来表示相同的内容。如果我错了,请纠正我。你是对的,我还在睡觉。这就是代码猴子的问题所在。@DanAndrews和我认为你指的是java。在.Net中,我们使用
is
关键字来表示相同的内容。如果我错了,请纠正我。你是对的,我还在睡觉。这就是代码猴子的问题所在。@DanAndrews和我认为你指的是java。在.Net中,我们使用
is
关键字来表示相同的内容。如果我错了,请纠正我。你是对的,我还在睡觉。这就是代码猴子的问题所在。@DanAndrews和我认为你指的是java。在.Net中,我们使用
is
关键字来表示相同的内容。如果我错了,请纠正我。你是对的,我还在睡觉。这就是代码猴子的问题所在。