我有一个 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/