0
如果我有一個定義了setter的類,那麼如何從該類的一個實例中引用那麼生成的方法作爲函數。該規範排序表明,它是變量+「的id =」(似乎愚蠢的),但是這並不解析在Dart中爲setter方法生成的名稱是什麼?
因此,例如:
class Bar {
set foo(int value) {
//whatever
}
}
typedef F(int value);
void main() {
F f = new Bar().foo=; //Fails, but what should this be??
f(5);
}
你可以用MethodMirror.invoke()調用一個帶有鏡像的setter,我認爲你必須使用「set:」前綴仍然是鏡子。 –
嘿賈斯汀,看着:http://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/lib/mirrors/mirrors.dart?r=10918我沒有看到一個invoke方法在MethodMirror中。在ObjectMirror中有一個,但它與F(int值)的簽名非常不同,因此無法將其分配給F. – Cutch
糟糕,您是對的。它在ObjectMirror上,現在看起來也有setField()。它不會有簽名f(int v),因爲它必須處理任何方法調用,所以它更像noSuchMethod()。 此外,您不能通過鏡像系統關閉方法。這將是非常棒的。也許如果InstanceMirror.hasReflectee是真的,它可以讓你捕獲成員。 –