1

次のコードは失敗します:

object Message {
    def parse[T](bsonDoc: BSONDocument): Try[T] = {
        implicit val bsonHandler = Macros.handler[T]
        bsonDoc.seeAsTry[T]
    }
}

Message.parse[messages.ClientHello](data)

エラーは次のとおりです。

No apply function found for T
    implicit val bsonHandler = Macros.handler[T]
                                             ^

ただし、型 (ケース クラスの 1 つ) をハードコーディングしても問題ありません。

object Message {
    def parse(bsonDoc: BSONDocument): Try[ClientHello] = {
        implicit val bsonHandler = Macros.handler[ClientHello]
        bsonDoc.seeAsTry[ClientHello]
    }
}

Message.parse(data)

したがって、これはジェネリックの使用に問題があると思います。ちなみに、私はしなければなりませんimport messages.ClientHello。私がちょうど使用すると、次のようmessages.ClientHelloになります:

not found: value ClientHello
    implicit val bsonHandler = Macros.handler[messages.ClientHello]
                                             ^

BSON ドキュメントを取得して適切なケース クラスのインスタンスを返す単一のメソッドを持つという、私がやろうとしていることをどのように達成できますか?

4

1 に答える 1