我有这样一个模型的例子:
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(model: BirthdayModel);
然后在此方法中调用传递类的构造函数或方法
exampleMethod(@required model){
return model.fromJson(data);
}
有可能做到这一点吗?
不是你写它的方式。
不能将类作为参数传递。即使是类型参数也只传递类型,因此不能以这种方式使用静态成员。
你能做的是:
T exampleMethod<T>(T createModelFromJson(dynamic json)){
return createModelFromJson(data);
}
并称之为:
var birthday = exampleMethod(BirthdayModel.fromJson);
无法通过编程方式访问fromJson
-它不是实例方法,因此没有接口。必须显式访问静态方法。
(我忽略dart:mirrors
,因为您可能无法访问它们(。