问题:
是否可以动态转换为类型?
例如,使用镜子可以做到这一点:
var reflectee = im.getField(simpleName).reflectee;
var converted = testVal as reflectee.runtimeType;
上下文:
我想创建一个定义validate
方法的Mixin类:
abstract class Validatable {
bool validate(Map document) {
}
}
它将迭代为混合的类定义的变量,并检查文档中的变量是否属于同一类型。
现在,它正在处理获取相应变量的runtimeType
,但它是非常严格的,因为它没有强制转换。例如:
var a = 1.1;
var b = 1;
print(a.runtimeType == b.runtimeType); // false
最好更好地与as
核对,但我不知道如何让它发挥作用。 becase的:
a = b;
print(a.runtimeType); // int
而不是双倍,正如人们所预料的那样。
有可能吗?
答案 0 :(得分:1)
您可以使用
import 'dart:mirrors';
class A {
}
class B extends A {
}
class C extends A {
}
void main(args) {
var a = 1.1;
var b = 1;
var x = reflect(b);
print(x.type.isSubtypeOf(reflectType(num)));
print(x.type.isAssignableTo(reflectType(num)));
print(x.type.isAssignableTo(reflectType(double)));
var myb = new B();
print(reflect(myb).type.isSubtypeOf(reflectType(A)));
print(reflect(myb).type.isAssignableTo(reflectType(A)));
print(reflect(myb).type.isAssignableTo(reflectType(C)));
}