2012-08-24 6 views
7

Ich habe so etwas wie dies:Wie bekomme ich ein konkretes Objekt einer statischen Methode über die Spiegel-API?

class MyClass 
{ 
    static void DoSomething(arg1, arg2){...} 
} 

Via Reflexion, ich bin der Lage, die ClassMirror dieser Klasse zu bekommen. Von diesem Punkt, wie würde ich zu der konkreten statischen Funktion kommen, damit ich sie nennen kann.

Bitte beachte, dass ich zu verwenden versucht:

ObjectMirror.invoke('DoSomething', [arg1, arg2]); 

die zunächst zu arbeiten erscheinen würde, aber es funktioniert nicht Gang komplexer Typen als Argumente unterstützen, diese statische Funktion erfordert einen komplexen Typen als eine die es Argumente ist .

Idealerweise möchte ich das 'Function' -Objekt, das die statische Methode darstellt, erhalten, damit ich es direkt aufrufen kann.

Antwort

16

a. Der aktuelle Stand der Dinge ist vorübergehend. Der Plan ist, dass die Spiegel-API die Argumente mit Spiegeln für Sie umschließt.

b. Die API kann eventuell eine getProperty-Methode unterstützen, die Ihnen eine Zukunft für das Funktionsobjekt bietet. Sie erhalten jedoch kein Function-Objekt direkt, so dass dies in diesem Fall keinen Unterschied macht.

c. Die Kernidee ist, dass die API grundsätzlich auf Spiegeln funktioniert. Um es benutzbarer zu machen, sollte es Nicht-Spiegel als Eingabe akzeptieren und sie in Spiegeln für Sie einwickeln. Es wird immer Spiegel zurückgeben und in einigen Fällen Futures auf diese zurückgeben. Dies ist so, dass die API für entfernte und lokale Fälle gleich funktioniert.

d. Ressourcen für das Verständnis Spiegel:

  1. http://www.bracha.org/mirrors.pdf (wissenschaftliche Arbeit, harte going)
  2. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (ein Video, Pre-Dart, diskutiert früher Spiegelsysteme)
  3. http://gbracha.blogspot.com/2010/03/through-looking-glass-darkly.html (eine alte, Pre-Dart, Blog-Post von dir auf Spiegel)
  4. http://www.wirfs-brock.com/allen/posts/228 (Alle Wirfs-Brock Blog. Allen war in den 90er Jahren in Smalltalk zurück) ein Spiegel Pionier
  5. http://www.wirfs-brock.com/allen/posts/245

Sie können auch search my blog oder Allen Wirf-Brock's für Beiträge zum Thema.

+0

Arbeitete perfekt. Vielen Dank! –