Как получить конкретный объект статического метода через зеркальный API?

У меня есть что-то вроде этого:

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

Благодаря отражению я могу получить ClassMirror этого класса. С этого момента, как мне добраться до конкретной статической функции, чтобы я мог ее вызвать.

Обратите внимание, что я пытался использовать:

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

который изначально может работать, но он не поддерживает передачу сложных типов в качестве аргументов. Эта статическая функция требует наличия сложного типа в качестве одного из аргументов.

В идеале я хотел бы получить объект Function, представляющий статический метод, чтобы я мог вызвать его напрямую.

1 ответ

Решение

А. Нынешнее положение дел носит временный характер. Планируется, что зеркальный API закроет аргументы зеркалами для вас.

б. В конечном итоге API может поддерживать метод getProperty, который даст вам будущее для функционального объекта. Однако вы не получите объект Function напрямую, так что в этом случае это не будет иметь никакого значения.

с. Основная идея заключается в том, что API в основном работает с зеркалами. Чтобы сделать его более удобным, он должен принимать не-зеркала в качестве входных данных и оборачивать их в зеркала для вас. Он всегда возвращает зеркала, а в некоторых случаях возвращает фьючерсы на них. Это так, API работает одинаково для удаленных и локальных случаев.

д. Ресурсы для понимания зеркал:

  1. http://www.bracha.org/mirrors.pdf (академическая работа, жесткая работа)
  2. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (видео, предшествующее Dart, обсуждает более ранние зеркальные системы)
  3. http://gbracha.blogspot.com/2010/03/through-looking-glass-darkly.html (мой старый постдартовый пост в блоге о зеркалах)
  4. http://www.wirfs-brock.com/allen/posts/228 (блог Аллена Вирс-Брока. Аллен был пионером зеркала в Smalltalk в 90-х годах)
  5. http://www.wirfs-brock.com/allen/posts/245

Вы также можете искать в моем блоге или в блоге Аллена Уирфа-Брока сообщения на эту тему.

Другие вопросы по тегам