Entspricht der Java anonyme Klassen in C#?

Ich versuche port ein SDK in java geschrieben, mit C#.

In dieser software gibt es viele "handler" - Schnittstellen mit mehreren Methoden (zum Beispiel: attemptSomethingHandler mit success() und verschiedene Methoden Versagen). Diese Schnittstelle wird dann implementiert und instanziiert ist anonym innerhalb der aufrufenden Klasse und übergeben die attemptSomething Methode der SomethingModel Klasse. Dies ist eine asynchrone Methode und hat mehrere Orte, an denen es scheitern könnte oder ruft eine andere Methode (Weitergabe der Hundeführer). Auf diese Weise, die anonyme Implementierung von attemptSomethingHandler verweisen können private Methoden in die Klasse, ruft attemptSomething.

In C# ist es nicht möglich, anonym eine Schnittstelle implementieren. Ich könnte explizit implementieren Sie eine neue Klasse, aber diese Umsetzung wäre eindeutig zu diesem aufrufenden Klasse und nicht für irgendetwas anderes. Noch wichtiger ist, ich würde nicht in der Lage sein, um Zugriff auf die privaten Methoden der aufrufenden Klasse, die ich brauchen und nicht wollen, öffentlich zu machen.

Grundsätzlich, ich brauche, um mit verschiedenen code aus der aufrufenden Klasse je nachdem, was passiert in der SomethingModel - Klasse Methoden.

Ich gelesen habe bis auf die Delegierten aber dies würde erfordern, vorbei an so viele Delegierte, wie es Methoden in der hf-Schnittstelle (soweit ich das sagen kann).
Was ist der geeignete Weg, dies zu tun in C#? Ich fühle mich wie ich bin nicht auf eine sehr Allgemeine programming-Strategie. Es muss einfach eine einfache, saubere Art und Weise zu strukturieren und zu lösen dieses problem.

  • Vielleicht lohnt es sich, zur illustration Ihrer Frage mit den java-code, den Sie versuchen zu port, und Ihren Versuch so weit?
  • Ihre Frage ist unklar, so dass ich nicht VTC es noch nicht, aber möchten Sie vielleicht check out stackoverflow.com/questions/191013/...
  • Könnte man implementieren Sie die Schnittstelle in eine innere Klasse. Auf diese Weise KÖNNEN Sie den Zugriff auf die privaten Mitglieder der aufrufenden Klasse.
  • Es klingt fast so, wollen Sie eine private geschachtelte Klasse.
  • Viele Fälle von anonymen Typen in Java kann ersetzt werden durch Ereignisse oder Lambda-Ausdrücke in C#.
  • Sie kann ein compiler

InformationsquelleAutor bkjvbx | 2014-12-03
Schreibe einen Kommentar