gpt4 book ai didi

dart - 在 Dart 中动态填充父字段

转载 作者:行者123 更新时间:2023-12-04 17:49:33 25 4
gpt4 key购买 nike

我正在从 map 数据动态创建对象,填充匹配键名的字段。当在父字段上定义字段时会出现问题,尝试在父字段上设置值会产生错误:

No static setter 'name' declared in class 'Skill'.

NoSuchMethodError : method not found: 'name'

代码:

class Resource {
String name;
String description;

Resource.map(Map data)
{
ClassMirror c = reflectClass(runtimeType);
ClassMirror thisType = c;
while(c != null)
{
for (var k in c.declarations.keys) {
print('${MirrorSystem.getName(k)} : ${data[MirrorSystem.getName(k)]}');
if(data[MirrorSystem.getName(k)] != null)
{
thisType.setField(k, data[MirrorSystem.getName(k)]);
}
}
c = c.superclass;
}
}
}

class Skill extends Resource
{
Skill.map(data) : super.map(data);
}

最佳答案

您应该使用 ObjectMirror在您的对象上设置一个字段。您的代码尝试在 ClassMirror 上设置一个字段它试图定义一个静态变量。

class Resource {
String name;
String description;

Resource.map(Map data)
{
ObjectMirror o = reflect(this); // added
ClassMirror c = reflectClass(runtimeType);
ClassMirror thisType = c;
while(c != null)
{
for (var k in c.declarations.keys) {
print('${MirrorSystem.getName(k)} : ${data[MirrorSystem.getName(k)]}');
if(data[MirrorSystem.getName(k)] != null)
{
// replace "thisType" with "o"
o.setField(k, data[MirrorSystem.getName(k)]);
}
}
c = c.superclass;
}
}
}

class Skill extends Resource
{
Skill.map(data) : super.map(data);
}

关于dart - 在 Dart 中动态填充父字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934312/

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