此示例代码是我的项目的简化版本,该_lockObject是传统的,不能被删除我有下面的类Json.NET序列化错误
[DataContract(IsReference = true)]
public class test
{
[DataMember]
private static object _lockObject = new object();
[DataMember]
private int num;
}
我尝试序列使用Json.NET因为它如下:
StringBuilder sb = new StringBuilder();
TextWriter text = new StringWriter(sb);
var serializer = new JsonSerializer();
serializer.TypeNameHandling = TypeNameHandling.Auto;
serializer.PreserveReferencesHandling = PreserveReferencesHandling.None;
serializer.NullValueHandling = NullValueHandling.Ignore;
serializer.TraceWriter = new MemoryTraceWriter();
serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
serializer.PreserveReferencesHandling = PreserveReferencesHandling.All;
serializer.TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full;
var test = new test();
serializer.Serialize(text, test);
我得到一个错误
错误获取值从 '_lockObject'
如果我从_lockObject删除静态序列化是成功的
为什么你想要序列化一个私有成员,它不包含任何有意义的数据,只用于锁定(我假设?)如果你想序列化名字不好的'num',你应该创建一个属性。 – Jodrell
此示例代码是我的项目的简化版本,_lockObject是遗留的,不能被删除 –
很好,但是,您不需要序列化它。另一个“新对象”,当JSON被反序列化时也可以做到,成员变量不带任何状态。 – Jodrell