7

我有这样的事情:

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

通过反射,我可以得到这个类的 ClassMirror。从这一点开始,我将如何获得具体的静态函数以便调用它。

请注意,我尝试使用:

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

这最初似乎可以工作,但它不支持将复杂类型作为参数传递,这个静态函数需要一个复杂类型作为它的参数之一。

理想情况下,我想获得代表静态方法的“函数”对象,以便可以直接调用它。

4

1 回答 1

17

一种。目前的情况是暂时的。计划是镜像 API 将为您使用镜像包装参数。

湾。API 最终可能会支持 getProperty 方法,该方法将为您提供函数对象的 Future。但是,您不会直接获得 Function 对象,因此在这种情况下这并不会产生任何影响。

C。核心思想是 API 从根本上适用于镜像。为了使它更有用,它应该接受非镜像作为输入并将它们包装在镜像中。它总是会返回镜像,并且在某些情况下会返回这些镜像。这样 API 在远程和本地情况下的工作方式相同。

d。了解镜子的资源:

  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(我在镜子上的一篇旧的 pre-dart 博客文章)
  4. http://www.wirfs-brock.com/allen/posts/228(Allen Wirfs-Brock 的博客。Allen 是 90 年代 Smalltalk 的镜像先驱)
  5. http://www.wirfs-brock.com/allen/posts/245

您还可以搜索我的博客Allen Wirf-Brock 的有关该主题的帖子。

于 2012-08-24T18:07:30.953 回答