1

私は Silhouette フレームワークに取り組んでおり、 type の変数を作成していますEnvironment。コンパニオン オブジェクトには署名があります

def apply[E <: Env](
  identityServiceImpl: IdentityService[E#I],
  authenticatorServiceImpl: AuthenticatorService[E#A],
  requestProvidersImpl: Seq[RequestProvider],
  eventBusImpl: EventBus

パラメータについては、( で定義されているように)authenticatorServiceImplコンパニオン オブジェクトを渡すことができると思っていましたが、試してみると:SessionAuthenticatorServicehttps://github.com/mohiva/play-silhouette/blob/master/silhouette/app/com/mohiva/play/silhouette/impl/authenticators/SessionAuthenticator.scala

val sessionEnv = com.mohiva.play.silhouette.api.Environment[SessionEnv](new UserService(userRepository),SessionAuthenticatorService() ,CredentialsProvider(),EventBus())

エラーが発生します

com.mohiva.play.silhouette.impl.authenticators.SessionAuthenticatorService.typ はパラメーターを取りません。

を削除しまし()たが、別のエラーが発生しました:

見つかりました: SessionAuthenticatorService.type [エラー] 必須: AuthenticatorService[components.SessionEnv#A]

私のコンセプトは健全ではないようです。なぜ合格できないのSessionAuthenticatorServiceですか?

4

1 に答える 1

1

コンパニオン オブジェクトは、コンパニオン クラスのインスタンスではありません。実は違うタイプです。

class ABC(val arg: Int)
object ABC

val abc: ABC      = new ABC(9)
val xyz: ABC.type = ABC

abc.arg  //res0: Int = 9
xyz.arg  //Error: value arg is not a member of object A$A1661.this.ABC
于 2018-04-03T08:33:39.150 に答える