我正在嘗試使用 dart 的鏡像 API 來動態呼叫一個函式。
doWork通過呼叫方法時如何獲取從方法回傳的結果InstanceMirror
class MyData {
String someString;
}
class MyService {
Future<MyData> doWork() async {
print('doing work');
return await Future(() => MyData()..someString = 'my result');
}
}
void main() async {
var instance = MyService();
var mirrror = reflect(instance);
var result = mirrror.invoke(#doWork, []);
}
我可以看到它"doing work"被列印到控制臺,所以我知道它正在被呼叫,但我正在努力解釋invoke函式的結果。
uj5u.com熱心網友回復:
該值InstanceMirror在屬性內reflectee。所以是這樣的:
import 'dart:mirrors';
class MyData {
String? someString;
}
class MyService {
Future<MyData> doWork() async {
print('doing work');
return await Future(() => MyData()..someString = 'my result');
}
}
void main() async {
var instance = MyService();
var mirrror = reflect(instance);
var result = mirrror.invoke(#doWork, <dynamic>[]);
var resultValue = await (result.reflectee as Future<MyData>);
print(resultValue.someString); // my result
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497927.html
