序章
私のWP8 C#/XAML プロジェクトでは、非同期プロセスが完了したことをビューに通知するためにイベントを使用しています。
2 種類の代表者がいます。
これらのデリゲートからイベントを作成していますが、一部の操作が完了または開始されたことをビューに通知するイベントがいくつかあります (プログレスバーを表示する、別のページに移動する、いくつかのコントロールを無効にするなど)。
これらのイベントを発生させるために、これらのデリゲートを発生させるプライベートな「通知メソッド」を作成したいと考えています。
私が念頭に置いている方法は、メソッドとして以下のコードサンプルにありますfireUpEvent
。
コードサンプル
ReturnState 列挙型
public enum ReturnState : int
{
state1 = 0,
... //for the purpose of the presentation
state6 = 15
...
}
イベントとメソッドの定義
public delegate void LoadingStartedEventHandler();
public delegate void LoadingFinishedEventHandler(ReturnState state);
public event LoadingStartedEventHandler LoadingStarted;
public event LoadingFinishedEventHandler LoadingFinished;
private void fireUpEvent(Action<ReturnState> action, Returnstate parameter)
{
if(action != null)
{
action(parameter);
}
}
private void fireUpEvent(Action action)
{
if(action != null)
{
action();
}
}
使用法
fireUpEvent(LoadingFinished, ReturnState.state1);
説明
問題は、コンパイルしようとすると、次のようなエラーが表示されることです。
Argument1: Cannot convert from 'XXXX.YYYY.SomeClass.LoadingFinishedEventHandler' to 'System.Action<XXXX.YYYY.Returnstate>'
グーグルを試しましたが、有用なものは見つかりませんでした。
なんでコンバーチブルじゃないの?
特定のデリゲートの代わりにこれらのメソッドを使用したいのですが、可能ですAction<ReturnState>
か?Action
Action
代わりに他の「タイプ」を使用する必要がありますか?
この「グループ」で私が知っているのはFunc
&の 2 つだけAction
ですが、他にもありますか?