目前,我们的代码库中有很多类,它们使用相同的元注释。例如:
@autoEquatable
@immutable
@jsonSerializable
class SignInWithFacebookEvent extends LoginEvent {}
在达特有没有办法把它们结合在一起?例如:
@event
class SignInWithFacebookEvent extends LoginEvent {}
这会简单得多,而且如果我需要从所有事件类中添加/编辑/删除另一个元注释,我可以只添加/编辑或删除一个,而不编辑数百个类。
编辑:
更好的是元注释的继承性,例如:
@autoEquatable
@immutable
@jsonSerializable
class LoginEvent {}
所有的子类都有这些注释。这样的事情可能吗?
注释没有语言级别的语义-元数据注释的行为和功能完全取决于实现这些功能的工具,并且没有规范它们必须如何处理注释。
如果你对一个注释进行子类化或实现,一些工具可能会起作用(我认为angular Dart是一个例子,如果你对Component注释进行子类别化,它会起作用(,而其他工具则不会。大多数读取元数据的工具都无法使用子类元数据。
我不认为在Dart中有任何本地实现这一点的方法,但有一个名为super_annotations
的pub.dev包可能有助于将多个注释组合为一个注释。