Dart 使用 IS 运算符检查泛型类型

Geo*_*Lee 3 generics dart

当我的变量是通用的时,我在检查变量的类型时遇到了一些问题。

例子TList<MyClass>

T is List<MyClass>
//return false
T is List
//return false
Run Code Online (Sandbox Code Playgroud)

最后,我不得不使用一些愚蠢的方法才能得到正确的答案

T.toString() == "List<MyClass>"
//return true
Run Code Online (Sandbox Code Playgroud)

有没有标准的方法来处理,还是我需要坚持我的愚蠢方法直到正式发布?

MrG*_*vka 6

我之前犯过“T i​​s SomeClass”错误。T 是一个类,所以“是”对它不起作用。

在你应该使用的元素上T == MyClass

在列表上,您应该实例化一个列表,例如List<MyClass>() is T

这不是一个干净的解决方案,但List<MyClass> == TList<MyClass>() == T不会起作用。不幸的是,直到现在我还没有想出任何更好的解决方案。希望它有效。