我有数百个现有的POCO,我目前正在使用Entity Framework。一个新的要求是我需要能够序列化这些对象并将它们缓存在Redis中。我决定使用Json.NET序列化为JSON,但它不会序列化我的所有对象。请参阅下面的示例。
public class Envelope<T>
{
public string Metadata{ get; set; }
public T Value { get; set; }
}
public class MyClass {
public string MyProperty { get; set; }
}
public void Serialize()
{
Envelope<List<MyClass>> envelope = new Envelope<List<MyClass>>();
envelope.Metadata = "Some Metadata";
envelope.Value.Add(new MyClass { MyProperty = "Some Property Data" });
string json = JsonConvert.Serialize(envelope);
}
当序列化此数据结构时,除MyClass.MyProperty
被忽略外,一切看起来都很好。 List<MyClass>
成为具有1个元素的JSON数组,但该元素没有属性。如果我将[DataContract]
和[DataMember]
添加到MyClass
,那么它们会被正确序列化。我不应该这样做,对吧?我没有必要将这些属性放在Envelope<T>
类上。我宁愿不必经历我的一百个POCO并添加这些属性。