将请求传递给Macro的不同方法

时间:2016-09-13 15:38:09

标签: macros haxe hexmachina

宏可以通过有效负载注入或直接从调度程序获取请求。但是如果我需要使用两种方式将请求传递给同一个宏呢?如果它包含@Inject标志,并且请求直接从调度程序传递,则会收到有关“缺少映射以注入属性”的错误。

2 个答案:

答案 0 :(得分:1)

因此,您希望有时可以通过有效负载将请求传递给Macro,有时则不会。在第二种情况下,没有注射失败。

要实现这一目标,您可以使用以下代码注释您的媒体资源:@Optional(true) 这样,如果映射不可用,则注射器不会哭。

正如您所猜测的,如果在注射过程中缺少相应的映射,任何带有Optional注释的注入都不会抛出任何错误,因为这样,注入变为可选。

您可以查看示例here

答案 1 :(得分:0)

看到你的例子会很高兴,但是当你想要将有效负载作为注入依赖项传递时,它应该以下面的方式传递:

dispatcher.dispatch( MyMessage.MESSAGE, [myRequest, new ExecutionPayload(myPayload, MyPayload)] )

所以重点是你需要使用hex.control.payload.ExecutionPayload类作为调度的第二个参数。但我很好奇你为什么不将这两者统一为一个请求。