RestSharp - 如何避免隐藏 class 成员的序列化?

RestSharp - How to avoid serialization of hidden class members?

我隐藏了一个继承成员 bool 以允许其值为 null(我必须这样做)。 但是当我在序列化中使用这个 class 的实例时,原始值被序列化而不是 bool?

  public class SomeDto
 {
    public  bool IsRemoved { get; set; } = false; //Serialization is using this one
 }

  public class SomeClass: SomeDto 
 {
    public  new bool? IsRemoved { get; set; }//Instead of this one
 }


  private void Serialize()
 {
   SomeClass someClass = new SomeClass();
   someClass.IsRemoved = null;

   RestRequest request = new RestRequest(Method.POST);
   request.AddBody(someClass);
 }

有没有强制序列化得到这个新的 属性 而不是原来的?

你们的类型不一样。声明 'new' 是无用的,因为它不会仅仅因为名称而覆盖它,这两种类型都将存在于对象上(你将有一个可为空的 bool 和一个常规 bool [这与任何东西都一样,你可以将其声明为字符串等,您实际上并没有对编译器隐藏它])。

我建议解决此问题的唯一方法是导入 JSON.Net,将 RestSharps jsonserializer 设置为使用 JSON.Nets RestSharp Serializer 并将其添加为不解析基本对象类型(除非您在其他情况下需要它序列化基本类型,但如果是这种情况,您需要重做您的策略)