当前位置:  开发笔记 > 编程语言 > 正文

在派生类中引发事件处理程序

如何解决《在派生类中引发事件处理程序》经验,为你挑选了1个好方法。

谁能给出解决方案?

public class BaseOne{
    public event EventHandler OperationChanged;
}

public class Derived: BaseOne
{
    private void OnChange(){
        if(OperationChanged!=null){
            OperationChanged(this,new EventArgs());
        }
    }
}

public Class MainClass
{
    public void Main()
    {
        Derived d = new Derived();
        d.OperationChanged += OnOperationChange;
    }

    private void OnOperationChange(object sender, EventArgs e)
    {
        MessageBox("Hello I'm Called");
    }
}

我试过这样的话,你能提出更好的方法吗?提前致谢 :)



1> Acha Bill..:

你不能直接解雇基类事件.

这是一个有用的模式.

using System;

class Base
{
    public event EventHandler operationsChanged;
    public void OnOperationsChanged(EventArgs e)
    {
        operationsChanged(this,e);
    }
}
class Derived : Base
{
    public void OnSpecificOperationChanged()
    {
        OnOperationsChanged(EventArgs.Empty);
    }
}
class Test
{
    static void  Main()
    {
        Derived d = new Derived();
        d.operationsChanged += OnOperationsChanged;

        //invoke
        d.OnSpecificOperationChanged();

    }
    static void OnOperationsChanged(object sender, EventArgs e)
    {
        Console.WriteLine("called");
    }
}

https://msdn.microsoft.com/en-us/library/hy3sefw3.aspx

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有