参数长度未知的自定义元数据?

时间:2013-11-26 17:00:30

标签: dart

我想知道是否可以创建可以包含可变数量参数的自定义注释。也许一个伪示例是最好的。我在这里开始:

class TestMetadata {
  final int prop;
  final String prop2;

  const TestMetadata({int prop, String prop2}) : this.prop = prop, this.prop2 = prop2;
}

const TestMetadata testMetadata = const TestMetadata();

目前,这将允许您注释任何类似的内容:

@testMetadata
void myFunction() {

}

@TestMetadata(prop:1, prop2:"Hello")
void myOtherFunction() {

}

我希望能够输入更多参数而无需明确定义它们。我试图将一个Map(我能想到的全部)添加到TestMetadata类中,如下所示:

class TestMetadata {
  final int prop;
  final String prop2;
  final Map theRest;

  const TestMetadata({int prop, String prop2, Map theRest}) : this.prop = prop, this.prop2 = prop2, this.theRest = theRest;
}

但是当试图从注释中访问Map时:

@TestMetadata(prop:1, prop2:"Hello", theRest:{param:"World"})
void myOtherFunction() {

}

我收到错误消息:

"常量创建的参数必须是常量表达式。"很公平,这是有道理的。还有其他人有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Map作为元数据,但需要通过以下方式传递Map

@TestMetadata(prop:1, prop2:"Hello", theRest:const{"param":"World"})

Map需要是明确的表达式(因此const),您需要使用String作为Map密钥。