如果你想,因爲你想這樣做以指定如何將Person
序列化爲JSON,我認爲更好的解決方案是使用自定義JsonConverter
。該轉換器可以是這個樣子:
class PersonConverter : JsonConverter
{
public override void WriteJson(
JsonWriter writer, object value, JsonSerializer serializer)
{
var person = (Person)value;
serializer.Serialize(
writer,
new
{
Name = person.LastName,
Age = (int)(DateTime.Now - person.BirthDate).TotalDays/365
});
}
public override object ReadJson(
JsonReader reader, Type objectType, object existingValue,
JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Person);
}
}
然後,您可以使用這樣的:
JsonConvert.SerializeObject(yourObject, new PersonConverter())
在哪些類中定義屬性?你在哪個類中定義了一個具有相同名稱的「新」屬性?你會連續什麼課程?如果將該屬性定義爲'new',則無法序列化到基類:基類的Persons屬性(取決於您的代碼的其餘部分)是未初始化的,爲空或爲空集合,而派生類的Persons屬性不會被序列化,因爲它不被視爲基類的一部分。 – CodeCaster
你爲什麼要這樣做?不會爲'Person'使用自定義轉換器更有意義? – svick
@svick我不知道自定義轉換器是什麼。請讓我高興! – FatAlbert