是否可以从此类中或从其外部动态地将实例方法或setter添加到现有类中?
答案 0 :(得分: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。