2013-11-27 47 views

回答

5

不,您不能將真實會員添加到班級中。

我說真實會員,因爲您可以使用noSuchMethod()來模擬此功能。這裏的一個例子:

@proxy 
class A { 
    final dynamicMethods = <Symbol, Function>{}; 

    noSuchMethod(Invocation i) { 
    if (i.isMethod && dynamicMethods.containsKey(i.memberName)) { 
     return Function.apply(dynamicMethods[i.memberName], 
      i.positionalArguments, i.namedArguments); 
    } 
    return super.noSuchMethod(i); 
    } 
} 

main() { 
    final a = new A(); 
    a.dynamicMethods[#sayHello] =() => print('hello'); 
    a.sayHello(); 
} 

在未來,這也許是可能的。請參閱the article on Mirrors的摘錄:

我們希望在未來支持更強大的反射功能。這些將包括鏡像構建器,旨在允許程序擴展和修改自己,以及基於鏡像的調試API。

+0

可以EXPANDO用於此http://api.dartlang.org/docs/channels/stable/latest/dart_core/Expando.html? 我剛纔簡短地看了一下,但不知道它到底能做什麼。 –

+0

我不這麼認爲。 –

+0

我想這只是分配值而不是方法。 –