在更改事件上为 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;