我有一个包含许多代表不同物理值的字段的类。验证值的优雅方法
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;
}
}
//...
是否有任何优雅灵活的方法来完成此类验证?
我想你已经做的方式是去的正确方法。唯一的变化可能是创建一个“验证器函数”,当你准备好一次检查所有*值时,你就会调用它。根据我的经验,Visual Studio(不知道你在用什么)似乎吞噬了属性设置器中发生的异常。 – jp2code
@ jp2code,setter中的异常工作正常。刚刚检查。 –