Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dart中的类中动态创建方法或setter?_Dart - Fatal编程技术网

如何在Dart中的类中动态创建方法或setter?

如何在Dart中的类中动态创建方法或setter?,dart,Dart,是否可以从该类内部或外部向现有类动态添加实例方法或setter?否,不能向类添加实际成员 我说的是真正的会员,因为你可以用它来模拟这样的功能。这里有一个例子: @proxy 甲级{ 最终动态方法={}; noSuchMethod(调用i){ if(i.isMethod&&dynamicMethods.containsKey(i.memberName)){ 返回函数.apply(dynamicMethods[i.memberName], i、 位置参数,即命名参数); } 返回super.noSu

是否可以从该类内部或外部向现有类动态添加实例方法或setter?

否,不能向类添加实际成员

我说的是真正的会员,因为你可以用它来模拟这样的功能。这里有一个例子:

@proxy
甲级{
最终动态方法={};
noSuchMethod(调用i){
if(i.isMethod&&dynamicMethods.containsKey(i.memberName)){
返回函数.apply(dynamicMethods[i.memberName],
i、 位置参数,即命名参数);
}
返回super.noSuchMethod(i);
}
}
main(){
最终a=新a();
a、 动态方法[#sayHello]=()=>打印('hello');
a、 你好;
}
在未来,这也许是可能的。见以下摘录:

我们希望将来支持更强大的反射功能。其中包括镜像构建器(mirror Builder),其设计允许程序扩展和修改自身,以及基于镜像的调试API


Expando可以用来做这个吗?我刚才看了一眼,但不知道它到底能做什么。我想它只是为方法赋值,而不是为方法赋值。这不完全是你要问的,但你可以使用委托或委托列表/映射来实现此功能。