当值相等时,GreaterThan 的 PostSharp 代码合同不会触发
PostSharp code contract for GreaterThan does not fire when the values are equal
在使用 postsharp 代码合同时,我将 GreaterThan 属性设置为
0。我有一个 ID 装饰有 GreaterThan 合约的动作
public virtual ActionResult Edit([GreaterThan(0)] int id)
当我调用 http://localhost/Items/Edit/-1 时,出现以下错误
The parameter 'id' must be greater than 0. Parameter name: id
当我调用 http://localhost/Items/Edit/0 时,我没有得到那个错误。
好像参数大于或等于。我可以将它设置为 .5,但是我的错误消息看起来很奇怪,因为它会说 The parameter 'id' must be greater than 0.5
如果这是一个错误并且您的号码将变为零,那么您可以尝试使用:
"StrictlyPositive",其中 要求值严格大于 0。
我知道这不是一个好的解决方案,但就目前而言。
这是由于命名有点笨拙造成的。
有两个约束:GreaterThan
和 StrictlyGreaterThan
。我认为这个信息澄清了它:-) - 你必须在你的用例中使用 StrictlyGreaterThan
。
是的,"greater than"是严格不等式,"greater than or equal"是非严格不等式,所以GreaterThan
的命名是不正确的。
好吧,我们知道了,但是 API 发布后就不可能更改 public。所以这个有趣的思维弯曲问题实际上是一个功能...
在使用 postsharp 代码合同时,我将 GreaterThan 属性设置为 0。我有一个 ID 装饰有 GreaterThan 合约的动作
public virtual ActionResult Edit([GreaterThan(0)] int id)
当我调用 http://localhost/Items/Edit/-1 时,出现以下错误
The parameter 'id' must be greater than 0. Parameter name: id
当我调用 http://localhost/Items/Edit/0 时,我没有得到那个错误。
好像参数大于或等于。我可以将它设置为 .5,但是我的错误消息看起来很奇怪,因为它会说 The parameter 'id' must be greater than 0.5
如果这是一个错误并且您的号码将变为零,那么您可以尝试使用:
"StrictlyPositive",其中 要求值严格大于 0。
我知道这不是一个好的解决方案,但就目前而言。
这是由于命名有点笨拙造成的。
有两个约束:GreaterThan
和 StrictlyGreaterThan
。我认为这个信息澄清了它:-) - 你必须在你的用例中使用 StrictlyGreaterThan
。
是的,"greater than"是严格不等式,"greater than or equal"是非严格不等式,所以GreaterThan
的命名是不正确的。
好吧,我们知道了,但是 API 发布后就不可能更改 public。所以这个有趣的思维弯曲问题实际上是一个功能...