【发布时间】:2021-09-27 20:18:23
【问题描述】:
我有一个在T extends SomeClass<A> 上通用的工厂类。但问题是A 在类级别不为人所知,而仅在方法级别。为了让自己更清楚一些代码:
class Factory<T extends SomeClass<A>> { // Don't know A here
T<A> Function<A>(A arg) _constructor; // Function that produces my T's and is generic over A
Factory(this._constructor);
T<String> newString(String arg){ // A is only known here
return _constructor(arg);
}
T<int> newInt(int arg){
return _constructor(arg);
}
}
这显然不是合法的 Dart 代码,但是使用 Dart 的泛型甚至可以实现这种效果,还是需要代码生成?我尝试使用扩展方法,但它们并没有解决_constructor 具有返回类型T<A> 的问题。而且我明确不想/不能使用T constructor<A, T extends SomeClass<A>>(A args)。
编辑:我认为我真正要求的是更高种类的类型,这在 Dart 中绝对不可能,并且正在就这个问题进行讨论 (https://github.com/dart-lang/language/issues/1655)。如果我对此事的理解不正确,请见谅。
【问题讨论】:
标签: dart