Pur*_*ome 5 .net c# enumeration http-status-codes
我希望确保一个人提供的号码是一个合法的HttpStatusCode.
起初我想过使用Enum.TryParse(..)或者Enum.Parse(..)我可能会因为提供了一些不良数据而得到无效结果.
例如.
In: Enum.Parse(typeof (HttpStatusCode), "1")
Out: 1
In: Enum.Parse(typeof (HttpStatusCode), "400")
Out: BadRequest
In: Enum.Parse(typeof (HttpStatusCode), "aaa")
Out: System.ArgumentException: Requested value 'aaa' was not found.
Run Code Online (Sandbox Code Playgroud)
好的,所以如果我传入一个糟糕的aaa值,我会得到System.Argument异常.但是当我传入一个数字1(作为文本,而不是一个int)时,我得到的返回值为1.我本来希望这会失败并抛出异常.
传递值400 确实会返回正确的BadRequest枚举.
任何想法,伙计们?
Run*_* FS 10
而不是试图解析值只是我们的IsDefined方法
Enum.IsDefined(typeof(HttpStatusCode),value)
Run Code Online (Sandbox Code Playgroud)
"1"的情况不会失败的原因是你可以对枚举进行二进制算术运算.这对于标志使用很多,因此枚举中不具体的值可能仍然是有效值
这是该记录的行为:
如果value是与enumType的命名常量不对应的名称,则该方法抛出ArgumentException.如果value是不表示enumType枚举的基础值的整数的字符串表示形式,则该方法返回枚举成员,其基础值的值转换为整数类型.如果不希望出现这种情况,请调用IsDefined方法以确保整数的特定字符串表示形式实际上是enumType的成员.
| 归档时间: |
|
| 查看次数: |
4531 次 |
| 最近记录: |