c# – 完全初始化的类

我在课堂上使用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;  
  ...
};
点赞