dart - 如何将类传递给方法并在那里创建它
问题描述
我有这样一个模型示例:
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);
}
是否有可能做到这一点?
解决方案
不是你写的方式。
您不能将类作为参数传递。甚至类型参数也只传递types,所以你不能那样使用静态成员。
你可以做的是:
T exampleMethod<T>(T createModelFromJson(dynamic json)){
return createModelFromJson(data);
}
并将其称为:
var birthday = exampleMethod(BirthdayModel.fromJson);
无法以编程方式访问fromJson
- 它不是实例方法,因此没有接口。静态方法必须显式访问。
(我忽略dart:mirrors
了,因为你可能无法访问这些)。