[英]Call a method in one class from another class in flutter and dart
[英]Dart/Flutter - Call constructor of unknown concrete class (get class from Type)
我想調用一個具體的 class 的構造函數,但我只有一個實現接口的Type
。 是否可以從該Type
中獲取具體的 class 並調用其構造函數而無需實際知道它?
我當前的解決方法是使用強制轉換的開關,但這似乎不合理,因為每當另一個 class 實現該接口時,我都必須維護該開關。
abstract class IFace {
String foo();
}
class Bar implements IFace {
String foo() => 'I am Bar';
}
T? getObject<T extends IFace>() {
// what I'd like to do, but does not work:
// return T();
// what I have to do instead:
switch (T) {
case Bar:
return Bar() as T;
default:
return null;
}
}
void main() {
Bar? bar = getObject<Bar>();
print(bar?.foo()); // I am Bar
}
這不是一件容易的事,因為如果 T 沒有公共構造函數,或者它有命名構造函數怎么辦? ;)
我認為只有使用 dart:mirrors package 才有可能,這在 Flutter 上不可用(由於 AOT 編譯)。
作為替代方案,您可以嘗試使用可反射的 package,但這也不是一件容易的事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.