3

class のインスタンスがありFoo、特定の方法で注釈が付けられたすべてのメソッドのリストを取得したいとします。メソッド自体への参照が必要なので、リフレクションを使用して毎回メソッドを呼び出すのではなく、最初に参照を取得するだけです。

つまり、これと同等のリフレクションを行いたいのです。

class Foo {
  a() {print("a");}
}

void main() {
  var f = new Foo();
  var x = f.a; // Need reflective way of doing this
  x(); // prints "a"
}

を使用してみInstanceMirror#getFieldましたが、メソッドはフィールドと見なされないため、機能しませんでした。何か案は?

4

2 に答える 2

1

取得しようとしているものは、メソッドの「閉鎖」バージョンとして記述されます。つまり、メソッドを関数として取得する必要があり、レシーバーは関数呼び出しで暗黙的です。ミラーからそれを取得する方法はありません。Reflect(foo).type.methods[const Symbol("a")] として methodMirror を取得できますが、結果を呼び出すことはできません。

于 2013-07-01T16:57:22.983 に答える