0
我不知道是否有可能綁定語法如下依賴關係:DI綁定到一個子類
bind [Environment[User, Authenticator]] to FakeEnvironment[User, SessionAuthenticator](testUser)
(這是從測試採取實際的模塊結合是稍微詳細)
其中SessionAuthenticator具有以下特徵:
case class SessionAuthenticator(val loginInfo : com.mohiva.play.silhouette.api.LoginInfo, ...)
extends scala.AnyRef
with com.mohiva.play.silhouette.api.Authenticator
with scala.Product
with scala.Serializable {...}
trait Authenticator extends scala.AnyRef {...}
但我得到的是在編譯過程中以下堆棧跟蹤:
[error] /home/mironor/projects/livrarium/test/controllers/CloudSpec.scala:22: overloaded method value to with alternatives:
[error] [T <: com.mohiva.play.silhouette.api.Environment[services.User,com.mohiva.play.silhouette.api.Authenticator]](fn: => T)(implicit evidence$2: reflect.runtime.universe.TypeTag[T])scaldi.BoundHelper[T] <and>
[error] (none: None.type)scaldi.BoundHelper[com.mohiva.play.silhouette.api.Environment[services.User,com.mohiva.play.silhouette.api.Authenticator]]
[error] cannot be applied to (com.mohiva.play.silhouette.test.FakeEnvironment[services.User,com.mohiva.play.silhouette.impl.authenticators.SessionAuthenticator])
[error] bind [Environment[User, Authenticator]] to FakeEnvironment[User, SessionAuthenticator](user)
這樣我可以選擇只有一次在應用程序了的Module
使用並注入它像這裏面Authenticator
:
implicit val env = inject[Environment[User, Authenticator]]
而不是:
implicit val env = inject[Environment[User, SessionAuthenticator]]
我有什麼選擇?
謝謝,這解釋了這個問題,特質被定義爲特質環境[I <:Identity,T <:Authenticator] – Mironor 2014-11-28 07:53:52