Dart-通过映射构造函数实例化泛型类型

时间:2019-05-04 16:07:16

标签: dart flutter

您不能在Dart中实例化泛型类型,也不能在Flutter中使用镜像。但是,您可以 将类型映射到其闭包中的构造函数。

这对于处理手写类时的JSON序列化很有用,尤其是当数据源以多种形式(即Future<T>Stream<T>)返回相同的数据形状时。

问题:这是一个有效的模式,是否存在任何潜在的弊端?更好的选择?

class Dog{}
class Cat{}

Map models = {
    Dog: () => Dog(),
    Cat: () => Cat()
};

class Database<T> {
  T data;
  Database() {
    data = models[T](); // <-- this feels a bit weird, but works
  }
}

void main() {

  Database<Cat> cat = Database();
  print(cat.data is Cat);

}

0 个答案:

没有答案