如何在 flutter dart 中将对象映射到不同类型的对象?
How can I map an object to different type of object in flutter dart?
有什么方法可以将 PersonModel 对象映射到 flutter dart 中的 PersonEntity 吗?
这就是我目前做这种映射的方式,首先我为映射器声明一个接口(抽象的 class):
abstract class Mapper<FROM, TO> {
TO call(FROM object);
}
然后,我为任何模型、实体制作自定义映射器,如下所示:
class ToSource implements Mapper<SourceModel, Source> {
@override
Source call(SourceModel object) {
return Source(
id: object.id,
name: object.name,
);
}
}
并且用法如下:(将 SourceModel class 映射到 Source class)
final toSourceMapper = ToSource();
final sourceModel = SourceModel(id: 'f4sge248f3', name: 'bbc news');
final source = toSourceMapper(sourceModel);
如果有其他更好的方法来做这样的事情,请在下面回答..这对所有人都有帮助。
最简单的方法:
void main() {
final model = PersonModel(id: 0, name: 'name0');
final entity = _convert(model);
print(entity);
}
final _convert = (PersonModel e) => PersonEntity(
id: e.id,
name: e.name,
);
class PersonEntity {
int id;
String name;
PersonEntity({this.id, this.name});
@override
String toString() => 'id: $id, name: $name';
}
class PersonModel {
int id;
String name;
PersonModel({this.id, this.name});
}
结果:
id: 0, name: name0
有什么方法可以将 PersonModel 对象映射到 flutter dart 中的 PersonEntity 吗?
这就是我目前做这种映射的方式,首先我为映射器声明一个接口(抽象的 class):
abstract class Mapper<FROM, TO> {
TO call(FROM object);
}
然后,我为任何模型、实体制作自定义映射器,如下所示:
class ToSource implements Mapper<SourceModel, Source> {
@override
Source call(SourceModel object) {
return Source(
id: object.id,
name: object.name,
);
}
}
并且用法如下:(将 SourceModel class 映射到 Source class)
final toSourceMapper = ToSource();
final sourceModel = SourceModel(id: 'f4sge248f3', name: 'bbc news');
final source = toSourceMapper(sourceModel);
如果有其他更好的方法来做这样的事情,请在下面回答..这对所有人都有帮助。
最简单的方法:
void main() {
final model = PersonModel(id: 0, name: 'name0');
final entity = _convert(model);
print(entity);
}
final _convert = (PersonModel e) => PersonEntity(
id: e.id,
name: e.name,
);
class PersonEntity {
int id;
String name;
PersonEntity({this.id, this.name});
@override
String toString() => 'id: $id, name: $name';
}
class PersonModel {
int id;
String name;
PersonModel({this.id, this.name});
}
结果:
id: 0, name: name0