2

GlobalSettings 上 getControllerInstance 的预期使用模式是什么?是否可以在没有依赖注入框架的情况下使用它?

签名是getControllerInstance[A](controllerClass: Class[A]): A

因此,据我了解,这会在使用@前缀指定的任何路由上调用,并且您必须返回该类型控制器 ( A) 的实例。但是,如果A它的参数化类型Class在运行时会受到类型擦除,对吗?我如何知道要求使用哪个控制器类?

4

1 回答 1

1

我发现这种方式看起来非常非 Scala,但对我有用。

override def getControllerInstance[A](controllerClass: Class[A]): A = {
  if (controllerClass == classOf[CardsService]) ComponentsRegistry.cardsService.asInstanceOf[A]
  else super.getControllerInstance(controllerClass)
}

我绝对同意它很丑,并且很高兴看到更好的解决方案。

不幸的是,这里不可能使用模式匹配来使这段代码更惯用:如何在 Scala“匹配”语句中匹配类?

于 2013-02-10T00:53:58.717 回答