我有一個包含許多代表不同物理值的字段的類。驗證值的優雅方法
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中的異常工作正常。剛剛檢查。 –