class Cage<T>{
Cage();
}
class Chicken{
Chicken();
}
main() {
Type t= Chicken;
var cage = new Cage<t>(); //Does not work
var cage2 = new Cage<Chicken>(); //Works
}
为什么我不能将Type变量用作泛型类的Type参数?
这是我的问题的一部分,通过将类型变量发送到构造函数但很难解决,很容易解决
class Injector{
Map<Symbol, DependencyMapping> _dependencyMappings;
//problem comes here
RegisterDependency(Type type,[Symbol name=#unnamed]){
//...
var mapping = new DependencyMapping<type>(name);
}
}
class DependencyMapping<T>{
//...
}
abstract class DependencyProvider<T> {
//...
}
class ValueProvider<T> implements DependencyProvider {
//...
}
class ClassProvider<T> implements DependencyProvider {
//...
}
class SingletonProvider<T> implements DependencyProvider {
//...
}
答案 0 :(得分:7)
这在今天的Dart中是不可能的。参数化类型(诸如List之类的东西)可以采用文字类型(例如,List)或类型参数(例如,其中T被声明为泛型中的类型参数的List,如在Cage中)作为参数。它们不能采用任意表达式,即使它们是Type类型。像t这样的变量可能包含一个Type(如你的例子中所示),但一般来说很难确定。它可以很容易地保存非类型值,例如数字3,因为Dart的类型系统不能保证具有静态类型Type的东西确实是Type。如果我们让这些通过,系统将彻底;损坏。我们可以为此添加运行时检查,但这会影响性能。
答案 1 :(得分:1)
尚未支持此功能。
某处有一些解释,我不得不查一查......