C# 枚举错误 : is a 'type' , 在给定上下文中无效

标签 c# .net enums

我有一个 C# (.NET 2.0) 代码,我在其中调用了一个带有输入枚举的方法,但我无法让它工作。

我在方法 isAnOptionalBooleanValue 中有一个编译错误:

public static bool isAnOptionalBooleanValue(Status status, String parameterName, Object parameter) 
{
    return isAnOptionalValidValue(status, parameterName, parameter, UtilConstants.BooleanValues);
}

public static bool isAnOptionalValidValue(Status status, String parameterName, Object parameter, Enum setOfValues)
{
     ....
}

在其他类中:

public class UtilConstants
{
    public enum BooleanValues
    {
        TRUE, FALSE
    }
}

这个类存在是因为 bool 值是来自其他系统的输入字符串,所以我将它作为一个对象传递,并将它从我的枚举类转换为 bool 值。

它返回的错误如下: “UtilConstants.BooleanValues' 是一种‘类型’,在给定的上下文中无效” 在 return isAnOptionalValidValue(...) 行中有错误。

但我不知道如何修复它。通过以下方式更改它:

return isAnOptionalValidValue(status, parameterName, parameter, typeof(UtilConstants.BooleanValues));

也不行。

有什么想法吗? 提前感谢您的帮助!

最佳答案

您需要使用实际值,而不是 UtilConstants.BooleanValues(它确实是一种类型而不是值)。像这样:

UtilConstants.BooleanValues.TRUE | UtilConstants.BooleanValues.FALSE

或者如果你真的想检查一个输入字符串是否匹配一个枚举类型的常量,你应该改变签名:

public static bool isAnOptionalValidValue(Status status, String parameterName,
                                          Object parameter, Type enumType)

这样,您建议的使用 typeof 的方法调用就可以工作了。
然后,您可以通过调用 Enum.GetValues(enumType)

获取枚举的实际字符串值

关于C# 枚举错误 : is a 'type' , 在给定上下文中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15765024/

相关文章:

c# - 通过引用传递 VS 静态变量

c# - C# dot net 中的 webrtc 信令服务器

.net - 如何创建GUID?

c# - 为什么我们不允许在接口(interface)中指定构造函数?

c - 查看元素是否在枚举中

c++ - 枚举引用参数传输而不是 int 引用参数

swift - 结构等价? typealias 是执行此操作的 "Swift"方法吗?

c# - 套接字缓冲它接收到的数据

c# - 如何构建自己的自定义代码片段?

.net - MemoryCache 不区分大小写的键查找