在更改事件上为 C# class 编写验证例程
Write a validation routine for a C# class on change event
我正在尝试为我拥有的 C# class 编写一个 "onchange" 事件。这个想法是在实例化 class 或更改 属性 的任何时候捕获并触发一些代码来评估对象的 "health",然后设置 属性 class 为 true 或 false 基于被调用的方法。我最初的尝试是简单地在每个 属性 的 setter 中调用一个私有方法:
string _source = null;
public string Source
{
set
{
this._source = value;
OnClassChange();
}
get { return this._source; }
}
string _dest = null;
public string Dest
{
set
{
this._dest = value;
OnClassChange();
}
get { return this._dest; }
}
bool _isValid;
public bool IsValid
{
get { return _isValid; }
}
void OnClassChange()
{
_isValid = (_source == null) ? false : true ;
_isValid = (_dest == null) ? false : true;
}
但这看起来有点笨拙而且不优雅...我想使用某种侦听器,然后在我的 OnClassChange() 块中简单地遍历 class 的所有私有属性,确定 属性 的类型并调用一些逻辑来确定 属性 的值在循环中是否有效。
你根本不需要一个字段 - 除非验证成本很高(所以你想避免每次请求时都重新计算它)你可以只需要:
public string Source { get; set; }
public string Destination { get; set; }
public bool IsValid { get { return Source != null && Destination != null; } }
在 C# 6 中,IsValid
代码会更简单:
public bool IsValid => Source != null && Destination != null;
我正在尝试为我拥有的 C# class 编写一个 "onchange" 事件。这个想法是在实例化 class 或更改 属性 的任何时候捕获并触发一些代码来评估对象的 "health",然后设置 属性 class 为 true 或 false 基于被调用的方法。我最初的尝试是简单地在每个 属性 的 setter 中调用一个私有方法:
string _source = null;
public string Source
{
set
{
this._source = value;
OnClassChange();
}
get { return this._source; }
}
string _dest = null;
public string Dest
{
set
{
this._dest = value;
OnClassChange();
}
get { return this._dest; }
}
bool _isValid;
public bool IsValid
{
get { return _isValid; }
}
void OnClassChange()
{
_isValid = (_source == null) ? false : true ;
_isValid = (_dest == null) ? false : true;
}
但这看起来有点笨拙而且不优雅...我想使用某种侦听器,然后在我的 OnClassChange() 块中简单地遍历 class 的所有私有属性,确定 属性 的类型并调用一些逻辑来确定 属性 的值在循环中是否有效。
你根本不需要一个字段 - 除非验证成本很高(所以你想避免每次请求时都重新计算它)你可以只需要:
public string Source { get; set; }
public string Destination { get; set; }
public bool IsValid { get { return Source != null && Destination != null; } }
在 C# 6 中,IsValid
代码会更简单:
public bool IsValid => Source != null && Destination != null;