这不能在C#中完成.有办法吗?
...
笑,如果我的小双关语不被理解,我的意思是:我怎样才能将C#中的属性标记为NonSerialized?当然,当属性包含逻辑时,很自然地无法执行它,但是自动属性是可序列化的,因此,我希望有一些方法可以阻止它们的序列化.
[NonSerialized]
public string MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
是一个错误
[XmlIgnore]
public string MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
不是错误
NonSerialized指示不应序列化可序列化类的字段.
XmlIgnore指示XmlSerializer的Serialize方法不要序列化公共字段或公共读/写属性值
所以,如果你问
我希望有一些方法可以阻止他们的序列化.
答案是的,如果你正在使用XmlSerializer
编辑*: 自动实现属性由您实际无法访问的匿名字段支持,属性设计为由基于反射的机制控制.这些字段不能被反射机制引用(因为它们是匿名的).此编译器功能需要对自动属性的生成进行大量更改...还需要编译器将自动属性视为字段,以便将字段属性标记到其上.
要回答问题的更基本部分 - 您的观点是自动属性是序列化的,因此应该有一种方法来控制它们的序列化.你是对的 - 但是自动属性是一种速记,从来没有设计为你提供充分的灵活性,而是让你在需要的时候以"漫长"的方式轻松扩展它们的功能.
归档时间: |
|
查看次数: |
12140 次 |
最近记录: |