是否有一个简单、轻量级/廉价的调用来确定对象是否支持命名方法?所以,在这个 obj.respondsTo 会很棒。
dynamic _toJson(dynamic obj) {
return obj.respondsTo('toJson'))? obj.toJson() : obj;
}
class Foo {
String foo = "Foo.foo";
Bar bar = new Bar();
Map toJson() {
return {
"foo" : _toJson(foo),
"bar" : _toJson(bar)
};
}
}
一种替代方法是调用它并捕获 noSuchMethod 异常,但我认为这是不好的做法且昂贵?