我經常遇到這個問題,但我還沒有找到令人滿意的解決方案。原語的序列化
我正在實現一個savegames閱讀器(但它也可以應用於其他類型的文件)。取決於版本,還有一些添加的條目,但順序始終保持不變。所以我創建了一個類:
public class Entry<T> {
public T Value;
public readonly FileVersion MinVersion;
public Entry(T v = default(T), ScenarioVersion m = FileVersion.V115) {
Value = v;
MinVersion = m;
}
}
現在,你猜,我想用盡可能少的代碼編寫那些條目。我只想寫一行if (version >= MinVersion) { /* write data */ }
。這些條目可以是原始類型或對象,這是問題...
應該定義一個接口併爲每個需要的基本類型實現它作爲包裝?還是有更優雅的解決方案?
原諒我的無知,但究竟是什麼問題?原始類型可以在C#中序列化。如果你想在那裏序列化更多的控制,看看http://stackoverflow.com/questions/628843/byte-for-byte-serialization-of-a-struct-in-c-sharp。 – akton
我看不出如何解決以下兩個問題:1.某些值只在符合某些條件時才寫入,2.它不是靜態結構幷包含一些諸如'struct {int len;炭[長度]; }'。 – AKo
目前還不清楚問題是什麼。我會嘗試一個答案,但也許這個問題中的一個或兩個例子是最好的。 – akton