インターフェイスイベント(インターフェイス内のイベントの宣言)の優れた例は何ですか?インターフェイスイベントの実際の使用
ほとんどの場合、私はインターフェイス内でパブリックな抽象メソッドしか見ていませんでした。
インターフェイスイベント(インターフェイス内のイベントの宣言)の優れた例は何ですか?インターフェイスイベントの実際の使用
ほとんどの場合、私はインターフェイス内でパブリックな抽象メソッドしか見ていませんでした。
イベントを使用して、シリアルポートがデータを受信したときに通知しました。
ここは私のインターフェイスです。
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; }
}
イベントのイベントは、メソッドとほぼ同じです。どのインタフェースをどのように使用するかは、それらを使うことができます。
public interface IInterface {
event EventHandler QuestionAsked;
}
public class Class : IInterface {
event EventHandler QuestionAsked;
//As with typical events you might want an protected OnQuestionAsked
}
は、ここで私は私のアプリケーションの1に、このようないくつかのコードを持っている一例
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);
}
}
}
です。アプリはwinformsで書かれ、WPFにアップグレードされました。
.NETフレームワークの優れた例は、INotifyPropertyChangedインターフェイスです。このインターフェイスは、PropertyChangedイベントの1つのメンバーのみで構成されます。
WPFでは、コントロールにオブジェクトインスタンスの特定のプロパティが表示されることを指定できます。しかし、基になるプロパティーが変更された場合、このコントロールはどのように更新されますか?
バインドされたオブジェクトががインターフェイスをINotifyPropertyChangedの実装している場合、WPFフレームワークはちょうどを聞くことができるをにPropertyChangedし、適切に更新します。
INotifyPropertyChangedはフレームワークを通して使用されます。
ただ、古典的なシナリオは、受動的視野を持つMVPパターンであるINotifyPropertyChanged.PropertyChangedイベントで
を見て。 フォームは、NameChangedイベントを持つビュー・インタフェースを実装します。 ビューを作成または使用するプレゼンターは、このイベントにサブスクライブします。 テキストボックスの名前テキストが変更されると、このイベントが発生します。発表者に通知されます。 プレゼンターは、表示インターフェイスからのイベントのみを知っているので、テスト用のモックビューを提供できます。ビューはプレゼンターから完全に切り離されています。
[Model View Presenter Styles](https://lostechies.com/derekgreer/2008/11/23/model-view-presenter-styles/)の記事** Presenter Styleを観察する**という3番目のパターンは、ここで説明する** Passive View **パターンと最もよく似ているように見えます。 – DavidRR
イベントを発生させるときは、イベントのコピーを作成する必要があります(https://msdn.microsoft.com/en-us/library/w369ty8x%28v=.100%29.aspx) OnRaiseCustomEvent() ')を使用して**競合状態**の可能性を回避します。**:' EventHandler handler = this.Closed; if(handler!= null){...} ' – DavidRR