我有一个这样的模型示例:
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);
}
可以这样做吗?
答案 0 :(得分:1)
不是您编写的方式。
您不能将 class 作为参数传递。甚至类型参数也只能传递 types ,因此您不能以这种方式使用静态成员。
您可以做的是:
T exampleMethod<T>(T createModelFromJson(dynamic json)){
return createModelFromJson(data);
}
并命名为:
var birthday = exampleMethod(BirthdayModel.fromJson);
无法以编程方式访问fromJson
-它不是实例方法,因此没有接口。静态方法必须显式访问。
(我忽略了dart:mirrors
,因为您可能无法访问它们。)