[英]How to extend Dart class so that a dynamic property gets a proper type
[英]How to generate dynamic dart class code with proper methods
是否有任何方式/方法通過運行另一個 class 動態傳遞 class 名稱和屬性來生成任何 dart class class?
例如:class 姓名為“Student”,其屬性為id、name、age等。
`class Student {
String id;
String name;
int age;
String get id {
return id;
}
String get name {
return name;
}
int get age {
return age;
}
void set id(String id) {
this.id = id;
}
void set name(String name) {
this.name = name;
}
void set age(int age) {
if(age<= 0) {
print("Age should be greater than 5");
} else {
this.age = age;
}
}
}
我想生成類似於 Student class 的代碼。我想動態生成它,以便我可以通過提供 class 名稱和帶有方法名稱的屬性來生成多個 class。 `
我嘗試使用 build_runner、build_config 生成代碼,但它不是動態的。 我必須編寫相同的代碼才能生成准確的代碼。
如果您使用 Visual Studio Code,則可以使用Dart Getters 和 Setters擴展。 這將為您選擇的字段創建 getter 和 setter。 它顯然不能做的是編寫這樣的代碼,因為它不知道你想要什么:
void set age(int age) {
if(age<= 0) {
print("Age should be greater than 5");
} else {
this.age = age;
}
}
還有Dart Data Class Generator ,它允許您為您的類生成諸如json
序列化和==
方法之類的東西,並設置您的字段。
不,這是不可能的。 您的 Dart 程序中的類集是固定的。 只能使用那些在源代碼和導入的庫中定義的。
最接近動態指定字段和方法的 class 是定義一個 class,它覆蓋 Object 的 noSuchMethod 方法。這個 class 的實例可以查看它們的動態數據並決定如何響應方法調用,基於被調用方法的名稱。 這樣,這個 class 的不同實例可以假裝支持不同的方法和字段,基於它們的實例數據。
您試圖使用動態構造的類來解決什么問題? 可能有更好的方法來解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.