我有一个类与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