在限制中对属性可以获得的值进行编码的正确(和最佳)方法是什么?
例如,假设我有以下简单类:
Public Class MyClass
Public Property MyDate As Date
现在,假设MyDate
在运行时设置,但不能在一年前采用任何值。
在MyDate的setter中抛出异常,然后以Try...Catch
的方式在我的主模块中对此进行编程是正确的,然后警告用户该值是否错误或有更好的方法吗?
我确信这是一个非常简单的问题,但我只想确保按照最佳编程习惯来做这件事。
答案 0 :(得分:5)
是的,抛出和异常是一个好主意。在这种情况下,ArgumentOutOfRangeException似乎是最好的。关于MSDN:
参数值超出时抛出的异常 由调用方法定义的允许值范围。
答案 1 :(得分:2)
虽然抛出异常是一个有效选项,但我建议不要这样做。原因是当程序员设置属性时,他/她期望除了设置的值之外几乎不会发生。在这种情况下,我建议使用set函数而不是属性,或者将值作为构造函数的一部分传递(程序员期望这种验证逻辑发生)。
答案 2 :(得分:0)
查看此文章。它概述了System.ComponentModel.DataAnnotations命名空间中的Validators。它们是支持验证的模型的属性。
http://stephenwalther.com/archive/2008/09/10/asp-net-mvc-tip-43-use-data-annotation-validators.aspx
ASP.NET MVC支持使用JS在表单上显示这些验证,但在其他应用程序类型中,您可以从模型本身读取属性并强制执行验证。