我注意到RavenDb不需要實體具有默認構造函數。它是如何在查詢期間創建對象的呢?RavenDb對象實例化
回答
Idsa, 它的工作方式是,當你有一個ctor和一個json時,我們嘗試將ctor參數與json屬性相匹配,看看我們是否可以使它工作。
這種行爲被內置到Json.NET
當您不指定一個Visual Studio會自動在IL中生成一個。
如果您指定了一個私有的無參數構造函數,那麼將不會生成默認的公有無參數構造函數。
作爲一個實驗嘗試添加一個默認沒有參數私人構造函數來測試這個理論。我會假設RavenDb可能會遇到問題。
我有一個非默認的公共consructor一個實體,我看不出有RavenDb的任何問題它。我只是好奇它爲什麼如此 – SiberianGuy 2011-12-30 17:05:51
我相信RavenDB無法自動處理。如果我沒有弄錯,RavenDB會使用Newtonsoft JSON庫序列化爲JSON。因此,您必須爲其提供自定義解析器。
請參閱'Immutable entities'關於RavenDB FAQ,關於Raven DB Google集團this discussion的更多信息。
從你提到的討論引用:「JsonSerializer 似乎只是沒有任何定製的工作原理」。所以它確實有效(我在我的應用程序中看到它)。我只是好奇它是如何實施的 – SiberianGuy 2011-12-30 17:02:02
- 1. 對象實例化
- 2. 對象實例化
- 3. 實例化對象
- 4. 實例化JavaScript錯誤對象實例
- 5. ActionScript - 從實例實例化新對象?
- 6. 實例化對象的類
- 7. Java對象實例化
- 8. 鉤到對象實例化
- 9. ArrayList.add()的對象實例化?
- 10. 實例化對象速記
- 11. 實例化多個對象
- 12. 實例化對象C#
- 13. DocumentDatabase對象的實例化
- 14. C#對象實例化
- 15. 實例化對象OracleDate
- 16. 從IType實例化對象
- 17. JavaScript對象實例化
- 18. Python對象實例化
- 19. 對象的實例化
- 20. Python OOP對象實例化
- 21. 異步對象實例化
- 22. 實例化對象(codecademy)
- 23. 實例化春bean對象
- 24. C++對象實例化
- 25. JUnit TestCase對象實例化
- 26. Java對象實例化
- 27. C++:實例化對象
- 28. 實例化ActiveX對象
- 29. 旋轉實例化對象
- 30. 實例化對象和對象成員
真的很酷的東西:) – SiberianGuy 2012-01-01 09:41:14