ShouldSerialize *()vs *指定的条件序列化模式

我知道ShouldSerialize *模式和* Specified模式以及它们是如何工作的,但两者之间有什么区别吗?


当某些事情应该有条件地序列化时,是否有任何“陷阱”使用一种方法而不是另一种方法?


此问题仅供使用XmlSerializer,但也欢迎有关此主题的一般信息。


关于这个主题的信息非常少,因此可能是因为它们执行完全相同的目的而且它是一种风格选择。然而,看起来奇怪的是.NET实现者会通过反射分析类,并查找其中一个/两个模式来确定生成的序列化程序的行为,因为它会减慢序列化程序的生成速度,除非它只是一个向后兼容性工件。


编辑: 对于那些不熟悉这两个模式的人,如果*Specified属性或ShouldSerialize*方法返回true,则该属性被序列化。


public string MyProperty { get; set; }


//*Specified Pattern

[XmlIgnore]

public bool MyPropertySpecified { get{ return !string.IsNullOrWhiteSpace(this.MyProperty); } }


//ShouldSerialize* Pattern

public bool ShouldSerializeMyProperty()

{

     return !string.IsNullOrWhiteSpace(this.MyProperty);

}


翻翻过去那场雪
浏览 712回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP