我有一個類與API進行通信,需要對接觸到的任何數據進行一些轉換。這個類也是相同的:屬性只應由串行器設置
public class SerializeMe
{
public SerializeMe(string someString)
{
_someString = someString;
}
private string _someString;
public string TransformedValue
{
get { _someString = TransformToSomething();
return _someString; }
set { _someString = value; }
}
}
對於我的API調用者,我通過序列化這些類來記錄每個請求和響應。他們幾乎充當xml架構。
現在一切正常,我唯一的問題是有人可以理論上嘗試設置,並最終沒有得到預期的結果。它主要是一個設計問題,只是爲了讓我的代碼負責。我希望能夠使用一個私有集合,但XmlSerializer抱怨它。
是否有一個屬性或其他技術能夠使變換值不可譯,除了序列化程序?
另外如果沒有選項,則將該屬性設置爲Obsolete是一個選項。是否還有其他更適合使用的屬性?
此外,DataContractSerializer比XmlSerializer更高性能,並且可以處理字段以及屬性。一個缺點是你不能控制Xml的結構,所以如果你需要它的特定格式,你將無法使用它。 – Bronumski 2010-10-18 16:40:20
@bronumski如果性能是關鍵目標,我會使用protobuf網而不是:) – 2010-10-18 18:04:22