【问题标题】:How to generate dynamic dart class code with proper methods如何使用适当的方法生成动态 dart 类代码
【发布时间】:2023-01-12 02:04:23
【问题描述】:

是否有任何包可以通过运行另一个类来动态传递类名和属性来生成具有确切方法的任何飞镖类?

例如:类名是“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 类的代码。我想动态生成它,这样我就可以通过提供类名和带有方法名的属性来生成多个类。 `

我尝试使用 build_runner、build_config 生成代码,但它不是动态的。我必须编写相同的代码才能生成准确的代码。

【问题讨论】:

标签: flutter dart code-generation dart-pub


【解决方案1】:

如果您使用 Visual Studio Code,则可以使用 Dart Getters And 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 序列化和 == 方法之类的东西,并设置好您的字段。

【讨论】:

    【解决方案2】:

    不,这是不可能的。 Dart 程序中的类集是固定的。只能使用那些在源代码和导入的库中定义的。

    最接近具有动态指定字段和方法的类是定义一个重写 Object 的 noSuchMethod 方法的类。此类的实例可以查看它们的动态数据,并根据被调用方法的名称决定如何响应方法调用。这样,这个类的不同实例可以假装支持不同的方法和字段,基于它们的实例数据。

    您试图使用动态构造的类来解决什么问题?可能有更好的方法来解决您的问题。

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 2011-09-07
      • 1970-01-01
      • 2013-07-29
      • 2012-10-28
      • 1970-01-01
      相关资源
      最近更新 更多