GlobalSettings上getControllerInstance的预期用法模式是什么?是否可以在没有依赖注入框架的情况下使用它?
签名为getControllerInstance[A](controllerClass: Class[A]): A
因此,根据我的理解,这将在使用@
前缀指定的任何路由上调用,并且您必须返回该类型控制器的实例(A
)。但是如果A
是Class
的参数化类型,它在运行时会受到类型擦除的影响,对吗?我怎么知道要求哪个控制器类?
答案 0 :(得分:1)
我找到了看起来非Scala的方式,但对我有用。
override def getControllerInstance[A](controllerClass: Class[A]): A = {
if (controllerClass == classOf[CardsService]) ComponentsRegistry.cardsService.asInstanceOf[A]
else super.getControllerInstance(controllerClass)
}
我绝对同意这很难看,并且很乐意看到更好的解决方案。
不幸的是,这里不能使用模式匹配来使这段代码变得更加惯用:How can I match classes in a Scala "match" statement?