2012-08-24 7 views
7

ho qualcosa di simile a questo:Come ottenere oggetto concreto di un metodo statico tramite mirror API?

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

Via riflessione, io sono in grado di ottenere la ClassMirror di questa classe. Da questo punto, come potrei arrivare alla funzione statica concreta così posso chiamarla.

noti che ho cercato di utilizzare:

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

che avrebbe inizialmente sembrano funzionare, ma non supporta il passaggio di tipi complessi come argomenti, questa funzione statica richiede un tipo complesso, come uno dei suoi argomenti .

Idealmente, mi piacerebbe ottenere l'oggetto 'Funzione' che rappresenta il metodo statico in modo da poterlo richiamare direttamente.

risposta

16

a. Lo stato attuale delle cose è temporaneo. Il piano è che l'API mirror avvolgerà per te gli argomenti con i mirror.

b. L'API può eventualmente supportare un metodo getProperty che ti darà un futuro sull'oggetto funzione. Tuttavia, non otterrete direttamente un oggetto Function, quindi in questo caso non farà alcuna differenza.

c. L'idea principale è che l'API funziona fondamentalmente sui mirror. Per renderlo più utilizzabile, dovrebbe accettare i non mirror come input e avvolgerli in specchi per te. Restituirà sempre i mirror e in alcuni casi restituirà i future su questi. Questo è così l'API funziona allo stesso modo per casi remoti e locali.

d. Risorse per gli specchi comprensione:

  1. http://www.bracha.org/mirrors.pdf (articolo accademico, corso dura)
  2. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (un video, pre-Dart, discute sistemi di specchi precedenti)
  3. http://gbracha.blogspot.com/2010/03/through-looking-glass-darkly.html (un vecchio, pre-dart, post sul blog mio sugli specchi)
  4. http://www.wirfs-brock.com/allen/posts/228 (di Allen Wirfs-Brock blog. Allen è stato un pioniere specchio torna in Smalltalk negli anni '90)
  5. http://www.wirfs-brock.com/allen/posts/245

È inoltre possibile search my blog o Allen Wirf-Brock's per i post sull'argomento.

+0

Ha funzionato perfettamente. Grazie! –