2

对属性可以获得哪些值进行限制编码的正确(和最佳)方法是什么?

例如,假设我有以下简单的类:

Public Class MyClass
   Public Property MyDate As Date

现在,假设MyDate在运行时设置,但不能取不到一年前的任何值。

在 MyDate 的设置器中抛出异常然后以某种Try...Catch方式在我的主模块中对其进行编程然后在值错误时提醒用户或者是否有更好的方法来执行此操作是否正确?

我敢肯定这是一个愚蠢的简单问题,但我只是想确保我是根据最佳编程实践来做这件事的。

4

3 回答 3

5

是的,抛出和异常是个好主意。ArgumentOutOfRangeException在这种情况下似乎是最好的。遵循 MSDN:

当参数的值超出被调用方法定义的允许值范围时引发的异常。

于 2012-11-20T19:24:12.060 回答
2

虽然抛出异常是一个有效的选择,但我建议不要这样做。原因是当程序员设置一个属性时,除了设置的值之外,他/她期望很少发生。在这种情况下,我建议使用 set 函数而不是属性或将值作为构造函数的一部分传递(程序员希望发生这种验证逻辑)。

于 2012-11-20T19:31:53.170 回答
0

看看这篇文章。它概述了 System.ComponentModel.DataAnnotations 命名空间中的验证器。它们是支持验证的模型的属性。

http://stephenwalther.com/archive/2008/09/10/asp-net-mvc-tip-43-use-data-annotation-validators.aspx

ASP.NET MVC 支持使用 JS 在表单上显示这些验证,但在其他应用程序类型中,您可以从模型本身读取属性并强制执行验证。

于 2012-11-20T19:25:36.450 回答