【发布时间】:2021-09-02 13:03:30
【问题描述】:
考虑以下几点:
class ModularRoute<TPageParameters extends PageParameters,
TModularPage extends ModularPage<TPageParameters>>
extends BaseModularRoute<TPageParameters, TModularPage> {
ModularRoute({
required BaseModule module,
required String route,
required TModularPage Function(Map<String, String?> params) createPage,
FutureOr<bool> Function(
ModularHistory route,
ModularRouterDelegate delegate,
)?
guard,
bool overrideModuleGuard = false,
}) : super(
module: module,
route: route,
createPage: createPage,
guard: guard,
overrideModuleGuard: overrideModuleGuard,
);
要实际构造它,我必须每次都定义泛型的两个参数。即:
ModularRoute<SomePageParameter, SomeModularPage>(...);
在 Dart 中有没有办法以复合方式定义它,以便参数泛型由 ModularPage 的泛型类型定义? IE。我想这样定义它:
class ModularRoute<TModularPage extends ModularPage<TPageParameters extends PageParameters>> {
...
}
然后就完成了。
这当然行不通,但我在 Dart 中经常遇到这个问题,它无缘无故地创建了冗长的代码,因为编译器应该能够轻松地推断出所涉及的泛型类型,然后使用它们。
【问题讨论】:
标签: dart