簡體   English   中英

是否可以反序列化C#中的對象,該對象已在C ++ MFC中進行二進制序列化?

[英]Is it possible to deserialize an object in C#, that has been binary serialized in C++ MFC?

該對象已使用CObject::Serialize()方法在C ++ MFC中CObject::Serialize()

我想在C#中反序列化。

這有可能嗎?

是的,有可能......

但是,你是否想要這樣做是另一回事。 MFC序列化格式面向MFC框架。 它將MFC類的名稱編碼為序列化數據,您必須嘗試為其找到等效的C ++類。

您最好的選擇是使用與語言無關的序列化格式並使用它來序列化您的數據。 JSON,XML或Protobuf非常適合這種情況。

這有可能嗎?

簡答:不。

MFC的反序列化在非托管堆上生成非托管對象,它需要訪問相應的類' CRuntimeClass ,以及框架的全局結構映射類名到工廠方法。 特別是后者無法從C#訪問。

您可以做的是讀取序列化二進制流,並重新構建要存儲在托管對象中的信息。 二進制文件格式記錄在TN002:持久對象數據格式 1)下 這將不允許您將這些托管對象序列化回MFC兼容的二進制流(除非您在托管類中重新實現文件格式)。


1) 注意:序列化流中每個對象的二進制表示形式在其類' CObject :: Serialize override中編碼。 了解整體文件格式不足以反序列化MFC序列化流。 您還需要知道每個對象的序列化代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM