我会直接接受这项业务。
让我们说我有以下特质定义:
trait Routable{
def routing(): String
}
我定义了以下课程:
case class MyEvent(name: String, age: Int) extends Routable{
override def routing(): String = "this is my routing key"
}
我试图创建一个名为routeOf[MyEvent]
的宏来返回已定义类的路由键。
过去3天我尝试了很多东西,我开始怀疑它是否有可能......
我的宏定义是:
def routeOf[T]: Any = macro RouteOfMacro.impl[T]
def impl[T: c.WeakTypeTag](c: whitebox.Context): c.Tree
但是我无法找到如何从WeakTypeTag中提取方法(并且互联网没有完整的示例)。
那可以吗?
答案 0 :(得分:0)
我正在尝试创建一个名为
routeOf[MyEvent]
的宏来返回 定义类的路由键。
代码的方式,它不是已定义类的路由键,而是实例的路由键。
如果您创建多个MyEvent
,则无法保证其路由密钥相同。
您可以做的是创建一个源自MyEvent
的伴随对象Routable
。我觉得classTag
或typeTag
对于这种情况可能就够了 - 你知道吗?不需要宏。但直到我知道更大的图片,很难说我将如何处理它。你能透露更多吗? :)