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 并将其添加为不解析基本对象类型(除非您在其他情况下需要它序列化基本类型,但如果是这种情况,您需要重做您的策略)
我隐藏了一个继承成员 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 并将其添加为不解析基本对象类型(除非您在其他情况下需要它序列化基本类型,但如果是这种情况,您需要重做您的策略)