Reflection 类方法的noSuchMethod(又称静态方法)

Reflection 类方法的noSuchMethod(又称静态方法),reflection,static,dart,Reflection,Static,Dart,我用飞镖已经有一段时间了。如果我想为类的对象实现动态getter、setter和函数,我可以使用noSuchMethod。但是,如果我现在想在类层上有这样一个动态的getter、setter方法呢?例如,在Ruby中,如果想要实现一个动态类方法,可以在类对象上定义方法\u missing-方法,例如: 类测试 def self.method_缺失 //进行一些匹配,返回结果或错误 结束 结束 如何在Dart中实现这一点?我认为在Dart中,如果没有镜像/反射,就无法实现这一点 我也不认为这很有

我用飞镖已经有一段时间了。如果我想为类的对象实现动态getter、setter和函数,我可以使用noSuchMethod。但是,如果我现在想在类层上有这样一个动态的getter、setter方法呢?例如,在Ruby中,如果想要实现一个动态类方法,可以在类对象上定义
方法\u missing
-方法,例如:

类测试
def self.method_缺失
//进行一些匹配,返回结果或错误
结束
结束

如何在Dart中实现这一点?

我认为在Dart中,如果没有镜像/反射,就无法实现这一点

我也不认为这很有用。
不能对“动态”类型调用静态方法,因此不能模拟静态方法


如果你需要它,你应该把它变成一个普通的方法,而不是一个静态的方法。

你可以像注意到的那样覆盖
noSuchMethod
,你有这样的用例吗?是的,但是如果我想实现一些类似ActiveRecords的查找函数(比如Model.find one\u by\u username)?这不需要一个静态方法吗?我不知道活动记录,但为什么需要
通过用户名查找一个\u
是静态的。您可以创建一个库变量
Model
并将
newmodel()
赋值给它,然后您可以调用它的实例方法
Model。通过\u username()查找一个。(我不建议将库变量命名为大写-我使用此大小写只是为了让您的示例看起来相等)您可以在
MyObject
之外创建一个
MyObjectRepository
,并在此存储库对象上使用
noSuchMethod
。这和静态方法几乎是一样的。您还可以将此存储库添加为MyObject的静态成员。因此,
MyObject.REPO.find\u one\u by\u username(…)
将接近ActiveRecordAPI。