Dart 如何将类传递给方法并在那里创建它
我有这样一个模型的例子:Dart 如何将类传递给方法并在那里创建它,dart,Dart,我有这样一个模型的例子: class BirthdayModel { List birthdays; BirthdayModel({ @required this.birthdays, }); factory BirthdayModel.fromJson(json){ return BirthdayModel(birthdays: json['data']); } Map<String, dynamic> toJson() { r
class BirthdayModel {
List birthdays;
BirthdayModel({
@required this.birthdays,
});
factory BirthdayModel.fromJson(json){
return BirthdayModel(birthdays: json['data']);
}
Map<String, dynamic> toJson() {
return {
'birthdays': birthdays,
};
}
}
然后在此方法中调用所传递类的构造函数或方法
exampleMethod(@required model){
return model.fromJson(data);
}
可以这样做吗?不是你写的方式 不能将类作为参数传递。即使是类型参数也只传递类型,所以不能以这种方式使用静态成员 您可以做的是: T exampleMethodT createModelFromJsondynamic json{ 从JSONDATA返回CreateModel; } 并称之为: var birthday=exampleMethodBirthdayModel.fromJson; 无法通过编程方式访问fromJson-它不是一个实例方法,因此没有接口。必须显式访问静态方法
我忽略了dart:mirrors,因为您可能无法访问它们。谢谢,将fromJson方法设置为静态,这解决了我的问题,dart:mirror还可以以更优雅的方式解决我的问题?在为Flutter或web编译时,dart:mirrors库不可用,因此它很少有用。如果您仅在本地运行Dart服务器运行时,则可以使用镜像来获取类类型,并从该类型的声明中查找和调用静态方法。不过,我不会说它优雅。
exampleMethod(@required model){
return model.fromJson(data);
}