GlobalSettings 上 getControllerInstance 的预期使用模式是什么?是否可以在没有依赖注入框架的情况下使用它?
签名是getControllerInstance[A](controllerClass: Class[A]): A
因此,据我了解,这会在使用@
前缀指定的任何路由上调用,并且您必须返回该类型控制器 ( A
) 的实例。但是,如果A
它的参数化类型Class
在运行时会受到类型擦除,对吗?我如何知道要求使用哪个控制器类?
GlobalSettings 上 getControllerInstance 的预期使用模式是什么?是否可以在没有依赖注入框架的情况下使用它?
签名是getControllerInstance[A](controllerClass: Class[A]): A
因此,据我了解,这会在使用@
前缀指定的任何路由上调用,并且您必须返回该类型控制器 ( A
) 的实例。但是,如果A
它的参数化类型Class
在运行时会受到类型擦除,对吗?我如何知道要求使用哪个控制器类?
我发现这种方式看起来非常非 Scala,但对我有用。
override def getControllerInstance[A](controllerClass: Class[A]): A = {
if (controllerClass == classOf[CardsService]) ComponentsRegistry.cardsService.asInstanceOf[A]
else super.getControllerInstance(controllerClass)
}
我绝对同意它很丑,并且很高兴看到更好的解决方案。
不幸的是,这里不可能使用模式匹配来使这段代码更惯用:如何在 Scala“匹配”语句中匹配类?