如何通过镜像API获取静态方法的具体对象?

Joh*_*ans 7 dart dart-mirrors

我有这样的事情:

class MyClass
{
   static void DoSomething(arg1, arg2){...}
}
Run Code Online (Sandbox Code Playgroud)

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

请注意,我尝试使用:

ObjectMirror.invoke('DoSomething', [arg1, arg2]); 
Run Code Online (Sandbox Code Playgroud)

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

理想情况下,我想获得表示静态方法的'Function'对象,以便我可以直接调用它.

小智 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(一个旧的,前飞镖,我在镜子上的博客文章)
  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的帖子,了解该主题帖子.