Frage

Ich brauche eine Methode für ein Objekt zu nennen, aber ich weiß nicht, den Namen der Methode erst zur Laufzeit.

Was sind die Techniken zur Verfügung?

(z. GetMethod (). Invoke (), Delegierten, c # 4.0 dynamisch)

Danke!

War es hilfreich?

Lösung

Die C # 4.0 dynamic Funktionalität wird der einfachste Weg, dies zu tun. In einem sehr realen Sinne ist dynamic „nur ein Wrapper“ um Reflexion. Es ist eine sehr gut Wrapper aber, dass wahrscheinlich die beste Wahl ist.

Weitere Möglichkeiten, in etwa zunehmenden schwieriger:

  • eine Drittanbieter-Spiegelung verwenden Bibliothek. Nicht sicher, was da draußen in diesen Tagen.
  • Schreiben Sie Ihre eigenen Reflection-Code.
  • Verwenden Sie die CodeDOM zu erstellen Code, der die Methode aufruft Sie anrufen möchten.
  • Emit IL, der tut so ziemlich das gleiche wie die CodeDOM generierten Code.
  • Erstellen Sie C # Quellcode, dass Sie dann kompilieren in eine Baugruppe, dass Sie anrufen können, was wiederum ruft das gewünschte Verfahren.

Die letzten drei sind nicht für schwache Nerven. Ihre beste Wette ist dynamic zu verwenden oder eigene Reflexion Code zu schreiben. Wenn ich vor dynamic drei Jahren hatte, als ich Code für etwas ähnliches zu schreiben, würde ich es benutzt haben.

Andere Tipps

Sie können die Reflexion zu Anruffunktionen nutzen, dass Sie nicht den Namen bis zur Laufzeit nicht kennen. Hier einige doc:

http://msdn.microsoft.com/ en-us / library / f7ykdhsy% 28VS.80% 29.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top