当值相等时,GreaterThan的PostSharp代码合约不会触发

时间:2015-09-15 16:08:12

标签: code-contracts postsharp

使用postharp代码合约时,我已将 GreaterThan 属性设置为 的 0 即可。我有一个带有用GreaterThan合同装饰的id的动作

   public virtual ActionResult Edit([GreaterThan(0)] int id) 

当我拨打http://localhost/Items/Edit/-1时,我收到以下错误

  

参数“id”必须大于0.参数名称:id

当我拨打http://localhost/Items/Edit/0时,我没有收到该错误。

似乎是参数大于或等于。我可以将它设置为.5,但之后我的错误消息看起来很奇怪,因为它会说参数'id'必须大于0.5

2 个答案:

答案 0 :(得分:1)

如果它是一个错误并且您的号码将为零,那么您可以尝试使用:

" StrictlyPositive ",whihch 需要一个严格大于0的值

这不是一个好的解决方案,我知道,但现在。

答案 1 :(得分:1)

这是由于一点命名笨拙造成的。

有两个限制因素:GreaterThanStrictlyGreaterThan。我认为这些信息澄清了它:-) - 您必须在用例中使用StrictlyGreaterThan

是的,“大于”是严格的不等式,“大于或等于”是非严格的,因此GreaterThan的命名不正确。

嗯,我们知道它,但是在公开后不可能更改API。所以这个有趣的心灵弯曲问题实际上是一个特征......