gpt4 book ai didi

dart - 使用镜像的动态类型转换

转载 作者:行者123 更新时间:2023-12-03 03:46:57 25 4
gpt4 key购买 nike

问题:

是否可以动态转换为类型?

例如,使用镜像可以做到这一点:

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进行检查,但是我看不到如何使它工作。成为:

a = b;
print(a.runtimeType); // int

而不是像人们期望的那样翻倍。

可能吗?

最佳答案

你可以用

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)));
}

关于dart - 使用镜像的动态类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22843098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com