为类的单个成员获取符号的最有效方法是什么?
import 'dart:mirrors';
class TestClass{
void iWantThisSymbol(){}
void butNotThisOne(){}
}
/**
* I can get all the symbols and filter down but this isn't nice
*/
void main(){
var allSymbols = reflectClass(TestClass).instanceMembers.keys;
var justTheSymbolIWant = allSymbols.where((symbol) => symbol.toString().contains('iWantThisSymbol')); // this doesnt seem very efficient or maintainable
}
答案 0 :(得分:2)
var justTheSymbolIWant = reflectClass(TestClass).instanceMembers[#iWantThisSymbol]
虽然有点迂腐,但你没有得到一个符号,你使用一个符号(#iWantThisSymbol
)来获得一个成员,在这种情况下是一个方法。所以我会把它重写为:
import 'dart:mirrors';
class TestClass{
void iWantThisMethod(){}
void butNotThisOne(){}
}
void main(){
var justTheMethodIWant = reflectClass(TestClass).instanceMembers[#iWantThisMethod];
}
此外,关于where()
使用
.where()
返回一个可迭代的,即使只有一个项匹配。您可能希望firstWhere()
始终返回单个项目。var justTheSymbolIWant = allSymbols.firstWhere((symbol) => symbol == #iWantThisSymbol);