接口事件的实际使用

use*_*677 30 c# events delegates interface

什么是接口事件的强大功能(在接口内声明事件)?

大多数时候我只看到界面内部的公共抽象方法.

Dan*_*ite 50

当串口接收数据时,我使用事件来发出信号.

这是我的界面.

public interface ISerialPortWatcher
{
    event EventHandler<ReceivedDataEventArgs> ReceivedData;
    event EventHandler StartedListening;
    event EventHandler StoppedListening;

    SerialPortSettings PortOptions { set; }

    bool Listening { get; set; }
    void Stop();
    void Start();
}

public class ReceivedDataEventArgs : EventArgs
{
    public ReceivedDataEventArgs(string data)
    {
        Data = data;
    }
    public string Data { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)


And*_*erd 18

.NET框架中的一个很好的例子是INotifyPropertyChanged接口.此接口只包含一个成员:PropertyChanged事件.

在WPF中,您可以声明控件将显示对象实例的特定属性.但是,如果底层属性发生变化,该控件将如何更新?

如果绑定对象实现了INotifyPropertyChanged接口,则WPF框架可以只监听PropertyChanged并进行适当更新.


And*_*ith 13

这是一个例子

public interface IMainAppWindow
{
   event EventHandler Closed;
}

// version 1 main window
public MainForm : Form , IMainAppWindow
{

}

// version 2 main window
public MainWindow : Window , IMainAppWindow
{
  event EventHandler Closed;

  public void OnClosed(object sender,RoutedEventArgs e)
  {
    if(Closed != null)
    {
      Closed(this,e);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的一个应用程序中有一些这样的代码.该应用程序是用winforms编写的,然后升级到WPF.