【问题标题】:Why can't I use generic Type as an argument in Dart 2?为什么我不能在 Dart 2 中使用泛型类型作为参数?
【发布时间】:2020-05-14 00:46:31
【问题描述】:

这似乎是允许的

  List<Type> myTypes = List();
  myTypes.add(SomeType);

  List<Type> moreTypes = [int, String];

但这失败了?

  List<Type> myTypes = List();
  myTypes.add(SomeGenericType<int>);

  List<Type> moreTypes = [SomeGenericType<int>, SomeGenericType<String>];

错误信息是:

没有为“类型”类定义运算符“

我是 Dart 的新手,主要来自 C、C# 背景,所以这看起来令人困惑和不一致。为什么泛型类型与非泛型有任何不同的处理方式?

【问题讨论】:

  • 即使这样也是不允许的:Type myType = SomeGenericType;

标签: dart


【解决方案1】:

这与这个问题有关:How to get generic Type? - 但这不是一个真正重复的问题,这就是我在这里复制它的原因。

虽然它没有回答“为什么”,但它给出了“如何”的解决方案:

辅助函数:

Type typeOf<T>() => T;

然后你可以在不需要实例的情况下获取类型:

myTypes.add(typeOf<SomeGenericType<int>>());

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多