在C#中,如何在序列化期间使XmlSerializer忽略属性,而不是在反序列化期间忽略属性?(或者我如何对Json.net做同样的事情?)
要阻止属性序列化,可以添加XmlIgnore
属性:
[XmlIgnore]
public int FooBar {get;set;}
Run Code Online (Sandbox Code Playgroud)
这将导致<FooBar>
在序列化期间省略标记.
但是,这也意味着<FooBar>
在反序列化期间将忽略标记.
在我的例子中,我在请求中接受来自用户的一系列项目,并且对于每个项目,如果用户想要添加,修改或删除项目,则可以指定动作属性.我想为GET列表调用使用相同的模型对象,并且不想返回此action属性.我希望这是一个很常见的情况.
另一个用例:说你有一个圆形对象
public class Circle
{
public double Radius { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并修改它以添加直径属性
public class Circle2
{
public double Diameter { get; set; }
public double Radius { get { return Diameter / 2; } set { Diameter = value*2; } }
}
Run Code Online (Sandbox Code Playgroud)
您可能只想序列化直径,但仍能够以旧格式反序列化仅包含半径的xml文件.
我做了我的研究并没有找到任何东西,因此这个问题
解决方案:我找到了解决方案.我可以在此MSDN文档中添加一个始终返回false的ShouldSerialize属性
(如果重新打开此问题,可以将此解决方案添加为实际答案)
我一直在阅读很多Apache Kafka文档,但我无法找到Kafka是否支持Producer-Brokers,Brokers-Consumers之间的安全通信,尤其是代理数据中心通信以进行代理复制.