次のコードは失敗します:
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 ドキュメントを取得して適切なケース クラスのインスタンスを返す単一のメソッドを持つという、私がやろうとしていることをどのように達成できますか?