【发布时间】:2015-02-17 12:01:57
【问题描述】:
当我将相关的 Newtonsoft.json.dll 从 .NET 3.5 更新到 .NET 4.5 时,基类没有序列化。在更新之前,基类正在序列化。
public class MyBaseClass
{
public string BaseProp1 { get; set; }
public string BaseProp2 { get; set; }
}
[DataContract]
public class MyDerivedClass : MyBaseClass
{
[DataMember]
public DateTime DerProp1 { get; set; }
public string DerProp2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
MyDerivedClass derc = new MyDerivedClass();
derc.BaseProp1 = "BaseProp1";
derc.DerProp1 = DateTime.Now;
derc.BaseProp2 = "BaseProp2";
derc.DerProp2 = "DerProp2";
Newtonsoft.Json.Converters.IsoDateTimeConverter conv = new Newtonsoft.Json.Converters.IsoDateTimeConverter();
conv.DateTimeFormat = "MM/dd/yyyy HH:mm:ss zzz";
string jsonSerializedObject = JsonConvert.SerializeObject(derc, conv);
}
}
程序不序列化基类的成员。原因是我没有在基类中指定 [DataContract]。我需要对所有成员进行序列化。 问题:
- 我无法从派生类中删除 [DataContract],因为它被 WCF 广泛使用。
- 我不想将 [DataContract] 添加到基类,因为有很多成员。
最好的方法是什么?
【问题讨论】: