下面的代碼爲我失敗:麻煩與ReactiveMongo的BSON宏和仿製藥
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]
^
但是,如果我硬編碼類型(我的情況類之一)它很好:
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文檔,並且返回適當的情況下類的一個實例一個單一的方法?
這個宏從哪裏來?我可以看看。 –
https://github.com/ReactiveMongo/ReactiveMongo/tree/v0.10.0/macros/src/main/scala – Derecho