Konvertieren delegate System.Aktion

Einführung

In meinem WP8 C#/XAML-Projekt ich bin über Ereignisse zu Benachrichtigen, die meine Ansicht, dass einige asynchrone Prozess abgeschlossen ist.

Habe ich zwei Arten der Delegierten.

Ich bin erstellen von Ereignissen, von denen die Delegierten und es gibt mehrere von Ihnen Benachrichtigung meiner Ansicht, dass einige Tätigkeit beendet oder gestartet (um zu zeigen, progressbar, navigieren Sie zu einer anderen Seite, deaktivieren Sie einige Steuerelemente et cetera).

Zu erhöhen, um diese Ereignisse, die ich will, um ein eigenes "Benachrichtigung-Methode", die erhöhen würde diejenigen Delegierten.

Die Methode, die ich im Sinn haben, ist im Code-Beispiel unten als fireUpEvent Methode.

Code-Beispiel

ReturnState enum

public enum ReturnState : int
{
  state1 = 0,
  ...            //for the purpose of the presentation
  state6 = 15
  ...
}

Definitionen von events & Methoden

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();
  }
}

Nutzung

fireUpEvent(LoadingFinished, ReturnState.state1);

Beschreibung

Das problem ist, dass wenn ich versuche zu kompilieren bekomme ich eine Fehlermeldung:

Argument1: Cannot convert from 'XXXX.YYYY.SomeClass.LoadingFinishedEventHandler' to 'System.Action<XXXX.YYYY.Returnstate>'

Ich habe versucht zu googeln, aber habe keine gefunden nützliche Sachen.

Warum ist es nicht Cabrio?

Ich möchte Action<ReturnState> und Action in diesen Methoden anstelle von bestimmten Delegierten, ist es möglich?

Sollte ich mit jedem anderen "Typ" wie Action statt?

Die nur zwei ich weiß von dieser "grooup" sind Func & Action gibt es andere?

InformationsquelleAutor mishan | 2013-11-08
Schreibe einen Kommentar