是否有可能動態地將實例方法或setter添加到現有類,無論是從這個類中還是從它之外?如何在Dart的類中動態創建方法或setter?
回答
不,您不能將真實會員添加到班級中。
我說真實會員,因爲您可以使用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。
可以EXPANDO用於此http://api.dartlang.org/docs/channels/stable/latest/dart_core/Expando.html? 我剛纔簡短地看了一下,但不知道它到底能做什麼。 –
我不這麼認爲。 –
我想這只是分配值而不是方法。 –
- 1. 在類中創建動態方法
- 2. 動態創建類方法
- 3. 如何在類中爲所有setter方法創建新實例?
- 4. 如何在QT創建器中自動創建getter和setter方法
- 5. 如何創建可在Dart的子類中重新定義的私有方法?
- 6. 靜態方法或setter或getters?
- 7. 如何在Python中動態類創建後調用父類的__init__方法?
- 8. 用動態方法創建類
- 9. 如何在JavaScript中動態創建靜態方法?
- 10. Grails如何爲域類自動/動態創建方法?
- 11. 如何爲Swift中的類中的字典創建getter setter方法
- 12. 如何在C#中創建自己的動態類型或動態對象?
- 13. 如何動態創建類
- 14. 如何動態創建類
- 15. 無法在android中創建動態類
- 16. 如何創建動態數組類的簡單方法?
- 17. 在Dart中爲setter方法生成的名稱是什麼?
- 18. 如何在python中創建類方法?
- 19. 如何在Rails中創建一個動態命名的方法?
- 20. 在php中動態創建動態類
- 21. 如何動態添加本地變量到動態創建的Python類方法
- 22. Perl動態創建方法
- 23. Reflection.Emit動態創建方法
- 24. 動態方法創建/
- 25. 動態創建方法
- 26. 在動態創建的方法
- 27. 內嵌setter或不在Kotlin中創建未使用的setter?
- 28. 如何在我使用NSClassFromString動態創建的類中調用方法?
- 29. 如何在Ruby中給定的類動態創建一個方法?
- 30. 如何在Python中的模塊級初始化()方法內動態創建類
這並不完全符合您的要求,但您可以使用代表或代表的List/Map來實現此功能。 – GameAlchemist