【发布时间】:2011-10-03 17:19:14
【问题描述】:
我有一个包含许多字段的类,它们代表不同的物理值。
class Tunnel
{
private double _length;
private double _crossSectionArea;
private double _airDensity;
//...
每个字段都使用读/写属性公开。我需要检查 setter 值是否正确,否则会生成异常。所有验证都是相似的:
public double Length
{
get { return _length; }
set
{
if (value <= 0) throw new ArgumentOutOfRangeException("value",
"Length must be positive value.");
_length = value;
}
}
public double CrossSectionArea
{
get { return _crossSectionArea; }
set
{
if (value <= 0) throw new ArgumentOutOfRangeException("value",
"Cross-section area must be positive value.");
_crossSectionArea = value;
}
}
public double AirDensity
{
get { return _airDensity; }
set
{
if (value < 0) throw new ArgumentOutOfRangeException("value",
"Air density can't be negative value.");
_airDensity = value;
}
}
//...
有没有优雅灵活的方式来完成这种验证?
【问题讨论】:
-
我认为你的做法是正确的。唯一的变化可能是创建一个
validator function,您可以在准备好时调用它一次检查所有的值。根据我的经验,Visual Studio(不知道你在用什么)似乎会吞下属性设置器中发生的异常。 -
@jp2code,setter 中的异常工作正常。刚刚检查过。
标签: c# .net validation