次のコードがあります
Type type = ...
var events=type.GetEvents(
BindingFlags.DeclaredOnly
| BindingFlags.Instance
| BindingFlags.Public).ToList();
ただし、これは親インターフェイスで宣言されたイベントも返します。例えば
両方
UIElement
ContentElement
埋め込む
IInputElement
イベントを定義する
//
// Summary:
// Occurs when the mouse pointer moves while the mouse pointer is over the element.
event MouseEventHandler PreviewMouseMove;
ただし、上記のようにすべてのバインド フラグを設定して GetEvents を呼び出すと、インターフェイスのイベントと 2 つの具象クラスが返されます。
親インターフェイスで定義されているイベントを GetEvents から除外するにはどうすればよいですか?
このように各イベントの拡張メソッドを生成していることに注意してください
public static
IObservable<EventPattern<MouseButtonEventArgs>>
PreviewMouseLeftButtonDownObserver(this IInputElement This){
return Observable
.FromEventPattern
<MouseButtonEventHandler, MouseButtonEventArgs>
( h => This.PreviewMouseLeftButtonDown += h
, h => This.PreviewMouseLeftButtonDown -= h);
}
そのため、イベントのルート定義のみを行い、仮想またはインターフェイスの実装を派生させませんでした。