C# 在某些继承属性上使用JsonIgnore

C# 在某些继承属性上使用JsonIgnore,c#,serialization,json.net,jsonresult,C#,Serialization,Json.net,Jsonresult,我有这样一个基类: public class Baseclass { public string Id { get; set; } public string Type { get; set; } public string Name { get; set; } } …以及许多继承这些属性的类,例如: public class Thing: Baseclass { public string Size{ get; set; } public

我有这样一个基类:

public class Baseclass
{
   public string Id { get; set; }
   public string Type { get; set; }
   public string Name { get; set; }
}
…以及许多继承这些属性的类,例如:

   public class Thing: Baseclass
    {
     public string Size{ get; set; }
     public string Color{ get; set; }
     public string Smell{ get; set; }
    }
现在,我不想序列化所有这些属性(mvc/jsonresult),所以我在我要排除的类的属性上使用[JsonIgnore],这很好。问题是我也不想序列化一个类的所有继承属性。我四处询问,得到了以下答案:

例:我不想在这个东西中序列化从基类继承的Id

我应该在基类virutal中设置Id:

public virtual string Id { get; set; }
并将以下内容添加到Thing类:

[JsonIgnore]
public override string Id { get; set; }

…但恐怕这行不通。我可以绕过它重建类层次结构。但我更喜欢一个更简单的解决方案。关于此解决方案不起作用的原因或排除某些继承属性的替代方案,您有什么建议吗?

为什么不想序列化它?如果派生类不需要该属性,那么听起来它不应该在基类中。当我将[JsonIgnore]属性应用于它未序列化或反序列化的“Id”属性时,您可以尝试解决方法。我一定错过了什么:
var x=newthing(){Id=“1”,Type=“2”,Name=“3”,Size=“4”,Color=“5”,嗅觉=“6”};var y=JsonConvert.SerializeObject(x);var z=JsonConvert.DeserializeObject(y)此处的一些建议:<代码>[JsonObject(MemberSerialization.OptIn)]
看起来是最简单的解决方案。事实上,这是重复的吗?谢谢你的回复!有些解决方案非常接近,但在与我的同事讨论之后,我们决定重写这些类,以避免冗余属性,从而减少混乱。