2014-01-25 60 views
1

如果我序列化(使用protobuf)在c#中的矩形(System.Drawing.Rectangle),是否可能在Objective-C或C++中反序列化它,因爲System.Drawing.Rectangle不是像int那樣的常見類型。從.Net到C++的序列化類型System.Drawing.Rectangle使用protobuf

如果可能,在C++或Objective-c中獲取這個矩形的最佳方法是什麼?

+2

我已經有一個包含System.Drawing.Rectangle類型的bin文件! –

+0

「這個矩形」究竟是什麼?請告訴我們你的代碼。 –

+2

bin文件已經存在並且包含矩形,可以在C++中獲得相同的矩形嗎? –

回答

4

我通過使用自己的類類型來修復它,我的意思是將System.Drawing.Rectangle替換爲我自己的類,而不是包含相同的屬性。

我的意思是如果你想序列化和反序列化你必須使用常見的類型。

2

System.Drawing.Rectangle類型在protobuf網(自動元組代碼不會因爲一些額外的屬性的觸發)直接支持,所以我假設你無論是在地方有一個替代,或要手動配置模型 - 例如:

RuntimeTypeModel.Default.Add(typeof(Rectangle),false) 
       .Add("X","Y","Width","Height"); 

在這種情況下,你需要做的是創建一個匹配一個.proto架構。 protobuf網實際上會幫助你在這裏:

var proto = RuntimeTypeModel.Default.GetSchema(typeof(Rectangle)); 

這對我來說(即,對於我所使用的配置)產生:

message Rectangle { 
    optional int32 X = 1; 
    optional int32 Y = 2; 
    optional int32 Width = 3; 
    optional int32 Height = 4; 
} 

這應該是任何protobuf的實現使用。

相關問題