【问题标题】:How do I use eventhandler from baseclass如何使用基类中的事件处理程序
【发布时间】:2009-06-29 19:12:33
【问题描述】:

我是否可以在派生类中使用 ChangeHappend。如果有怎么办?
如果没有,我应该怎么做?

class Base
{
    public delegate void ChangeHandler(object sender);
    public event ChangeHandler ChangeHappend;

    private int _foo;
    public int Foo
    {
        set
        {
            if (_foo == value) return;
            _foo = value;
            ChangeHappend(this);
        }
    }
}

class Derived : Base
{
    private int _bar;
    public int Bar
    {
        set
        {
            if (_bar == value) return;
            _bar = value;
            ChangeHappend(this); // This line gives an error. How can I use ChangeHappend here in Derived?
        }
    }
}

【问题讨论】:

    标签: c# .net event-handling delegates


    【解决方案1】:

    使用标准模式:On[EventName]

    public class MyBaseClass {
        protected virtual void OnSomethingHappend( EventArgs e ) {
            EventHandler handler = this.SomethingHappend;
            if ( null != handler ) { handler( this, e ); }
        }
        public event EventhHandler SomethingHappend;
    }
    
    public MyDerivedClass : MyBaseClass {
        public void DoSomething() {
            this.OnSomethingHappend( EventArgs.Empty );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-30
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多