C#类的定义有属性,属性的set写入器问题。
有个例子:
class Customer
{
private _name;
……
public string Name
{
……
set
{
if (Sting.IsNullOrEmpty(value.Trim())
{
    throw new ArgumentExcept("Name can't be null!");
}
else
{
    Name=value;
    OnNameChanged(EventArgs.Empty);}
}
}
}
解释一下OnNameChanged的作用原理什么的。
答案满意给100分。

解决方案 »

  1.   

    public   event   EventHandler   TextChanged; 
    protected   virtual   void   OnTextChanged() 

    if(this.TextChanged!=null) 
    this.TextChanged(this,EventArgs.Empty); 

     
    触发TextChanged事件
    调用this.OnTextChanged();
      

  2.   

    OnNameChanged是一个事件,这里的意思就是说,设给属性Name赋值后触发OnNameChanged事件,在其他地方注册了该事件的委托方法将会被执行。翻一下书或msdn,了解一下委托和事件相关知识吧。
      

  3.   

    OnNameChanged是一个事件
    代码里肯定有定义的地方。并且有注册事件的地方。这里的操作会出发这个事件,在注册事件的地方有该事件发生所出发的处理方法。
      

  4.   

    当修改Name属性时,引发事件。比如:
    Customer cust = new Customer();cust.Name="abc";
    就会触发事件。有篇文章同这个很相似:
    http://www.csharphelp.com/2006/08/net-event-handling-using-the-template-method-design-pattern/
      

  5.   

    在wpf里用到command 的地方 经常用。你找一个wpf的sample,研究下就知道了public event EventHandler NameChanged;public string Name
    {
    get { return name; }
    set { name = value; OnNameChanged(); }
    }private void OnNameChanged()
    {
    // If there are registered clients raise event
    if (NameChanged != null)
    NameChanged(this, new EventArgs());
    }