2
A
回答
1
您可以使用反射和(可選)動態IL生成。
例如,一旦你知道的類型(即有System.Type
實例),您可以枚舉所有字段(type.GetFields()
返回FieldInfo
對象的列表),然後用GetValue
方法來獲得字段的值。只要安全信任級別檢查通過,它就可以與私有字段一起使用。
這不是非常快,所以你可能想要預編譯字段訪問代碼(只有在分析器告訴你!)。在這種情況下,您可以使用System.Reflection.Emit
和DynamicMethod
設施。 (你可以在Google和MSDN上找到教程;我發現編譯一些功能可以幫助我完成與C#/ F#的工作,然後檢查Reflector/ildasm中的MSIL輸出)。
0
從實施ISerializable開始。該界面允許您手動控制序列化:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx
+0
我想知道protobuf網是如何做到這一點?看起來他們正在爲屬性類自動添加一些MSIL代碼 – geeko 2011-01-27 15:54:03
1
其實這很容易。如果您只想讀取二進制數據(不是序列化的對象,但是原始的二進制數據),則可以使用BinaryReader
。
相關問題
- 1. 如何在PowerShell中將二進制Stream對象寫入文件?
- 2. 如何在C#中將對象寫入二進制文件?
- 3. 用二進制文件讀寫對象
- 4. 如何從linux shell中訪問BIOS ROM二進制文件
- 5. 二進制文件的對象
- 6. 如何在.Net Restful Web服務中公開二進制文件?
- 7. 如何訪問gradle內部的二進制文件
- 8. 如何訪問文件的二進制數據?
- 9. .NET:如何用屬性[DataContract]二進制序列化對象?
- 10. 如何在另一個二進制文件中定義二進制文件?
- 11. 如何在C++中追加二進制文件與二進制文件
- 12. 如何將對象序列化爲二進制文件?
- 13. 如何在iOS 5.1/iPhone 4上運行fat二進制文件
- 14. 在與二進制文件不同的位置訪問App.config
- 15. Python二進制文件CTime 4字節
- 16. 如何從.NET程序集中檢索二進制文件?
- 17. 在Warbler中,如何通過Ruby代碼訪問編譯的二進制文件?
- 18. 如何在ios中訪問Salesforce附件正文(base64二進制數據)?
- 19. 二進制文件中的問題
- 20. .NET二進制文件讀取性能
- 21. 如何在.NET程序中攔截對文件的訪問
- 22. 在Neo4j中存儲二進制對象
- 23. 如何在對象控制器中訪問對象模型(「init」)
- 24. 打開/讀取二進制文件 - 訪問權
- 25. 如何在Access 2007 VBA中將傳入對象轉換爲二進制文件?
- 26. 在.Net中讀取文本和二進制信息的文件
- 27. 是否有任何二進制索引文件訪問技術?
- 28. XCode 4 Interface Builder:如何訪問繪製的對象
- 29. 從java中的二進制文件中讀取對象
- 30. 將二進制數據(例如二進制文件)導出爲.NET字符串?
在編譯和運行時發佈/定製/操作MSIL代碼的任何好書嗎? – geeko 2011-01-27 16:22:23