Dart 使用镜像的动态类型转换
问题: 是否可以动态强制转换为类型 例如,使用镜像是否可能:Dart 使用镜像的动态类型转换,dart,dart-mirrors,Dart,Dart Mirrors,问题: 是否可以动态强制转换为类型 例如,使用镜像是否可能: var reflectee=im.getField(simpleName.reflectee); var converted=testVal作为reflectee.runtimeType; 背景: 我想创建一个Mixin类,它定义了一个validate方法: 可验证的抽象类{ bool验证(地图文档){ } } 它将迭代为混合在其中的类定义的变量,并检查文档中的变量是否属于同一类型 现在,它正在处理获取相应变量的runtimeTy
var reflectee=im.getField(simpleName.reflectee);
var converted=testVal作为reflectee.runtimeType;
背景:
我想创建一个Mixin类,它定义了一个validate
方法:
可验证的抽象类{
bool验证(地图文档){
}
}
它将迭代为混合在其中的类定义的变量,并检查文档中的变量是否属于同一类型
现在,它正在处理获取相应变量的runtimeType
,但由于它不强制转换,因此限制性很大。例如:
var a=1.1;
var b=1;
打印(a.runtimeType==b.runtimeType);//假的
最好像那样检查,但我看不出如何让它起作用。因为:
a=b;
打印(a.runtimeType);//int
而不是像人们所期望的那样加倍
可能吗?您可以使用
导入“dart:mirrors”;
甲级{
}
B类扩展了A类{
}
C类扩展了{
}
空干管(args){
var a=1.1;
var b=1;
var x=反映(b);
打印(x.type.isSubtypeOf(reflectType(num));
打印(x.type.isAssignableTo(reflectType(num));
打印(x.type.isassignato(反射型(双));
var myb=新的B();
打印(reflect(myb).type.isSubtypeOf(reflectType(A));
打印(reflect(myb).type.isAssignableTo(reflectType(A));
打印(reflect(myb).type.isAssignableTo(reflectType(C));
}
我认为isSubtypeOf
和isAssignableTo
是相当新的。我只是想知道如何执行实现
。因为严格来说,我们不是在讨论子类型。我已经尝试过:B实现D
makesmyb
子类型并可分配给D
。如果它实现了一个接口,那么它可以是该类型的。我想isSubtypeOf
包括是。我运行的是SDK的1.1.3,我看到1.2已经过时了,所以添加了新的功能。我用新的函数调用检查了一些,将Map
和observateMap
作为类型,其中observateMap
实现Map
。根据文档,正如您所说,isSubclass
测试一个is
是正确的。然而,没有一种方法提到它们将测试为,也没有可观察映射将报告映射为true。也许1.3会带来一些亮点?