我在课堂上使用initiazling属性
我想在完全初始化后运行验证方法.
由于显而易见的原因,我无法使用构造函数.有没有办法在某种类初始化事件中做到这一点?
var t = new Foo
{
foo = "";
}
class Foo
{
public string foo {get; set;}
...
public bool validate {get ; set;}
private void validation()
{
if(foo == "")
validate = false;
if ...
}
}
最佳答案 您可以向属性添加验证逻辑.验证在分配属性后是否初始化类,如果初始化完成,则引发静态事件.您可以通过将事件发送者强制转换为Foo来获取对实例的引用.
public string Foo
{ get { return _foo; }
set
{
_foo = value;
if (IsInitialized)
OnClassInitialized();
}
}
public static event EventHandler ClassInitialized;
private OnClassInitialized()
{
if (ClassInitialized != null)
ClassInitialized(this, EventArgs.Empty);
}
用法:
Foo.ClassInitialized += (sender, e) =>
{
Foo foo = sender as Foo;
...
};