2012-08-24 19 views
7

que tienen algo como esto:¿Cómo obtener el objeto concreto de un método estático a través de la API reflejada?

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

través de la reflexión, soy capaz de obtener el ClassMirror de esta clase. A partir de este punto, ¿cómo llegaría a la función estática concreta para poder llamarlo?

Tenga en cuenta que traté de usar:

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

que aparecería inicialmente para trabajar, pero no admite paso de los tipos complejos como argumentos, esta función estática requiere un tipo complejo como uno de sus argumentos .

Idealmente, me gustaría obtener el objeto 'Función' que representa el método estático para que pueda invocarlo directamente.

Respuesta

16

a. El estado actual de las cosas es temporal. El plan es que la API espejo envuelva los argumentos con espejos por ti.

b. La API finalmente puede admitir un método getProperty que le dará un futuro en el objeto de función. Sin embargo, no obtendrá un objeto Function directamente, por lo que no hará ninguna diferencia en este caso.

c. La idea central es que la API funciona fundamentalmente en espejos. Para que sea más útil, debe aceptar no reflejos como entrada y envolverlos en espejos por usted. Siempre devolverá espejos, y en algunos casos devolverá futuros sobre estos. Esto es para que la API funcione igual para casos remotos y locales.

d. Recursos para la comprensión de los espejos:

  1. http://www.bracha.org/mirrors.pdf (documento académico, curso dura)
  2. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (un vídeo, pre-Dardo, se analizan los sistemas de espejos anteriores)
  3. http://gbracha.blogspot.com/2010/03/through-looking-glass-darkly.html (un viejo, pre-dardo, entrada de blog de la mina en los espejos)
  4. http://www.wirfs-brock.com/allen/posts/228 (de Allen Wirfs-Brock blog. Allen fue pionero espejo de vuelta en Smalltalk en los años 90)
  5. http://www.wirfs-brock.com/allen/posts/245

También puede search my blog, o Allen Wirf-Brock's para publicaciones sobre el tema.

+0

Funcionó perfectamente. ¡Gracias! –

Cuestiones relacionadas