c# – 使用空属性设置器时引发Visual Studio警告
发布时间:2020-12-15 17:17:05 所属栏目:百科 来源:网络整理
导读:我需要创建一个Serializable类. 在这个类中,我有一个MyGuid只读属性,我想要可序列化但不可反序列化(属性在后备字段中初始化). 使用基本序列化.NET功能,你知道,有一个reandonly属性使反序列化失败,因为它不能反序列化readonly属性. 因此,我决定使用支持字段创
我需要创建一个Serializable类.
在这个类中,我有一个MyGuid只读属性,我想要可序列化但不可反序列化(属性在后备字段中初始化). 使用基本序列化.NET功能,你知道,有一个reandonly属性使反序列化失败,因为它不能反序列化readonly属性. 因此,我决定使用支持字段创建一个公共get-set MyGuid属性,并使setter不执行任何操作: [Serializable] public class Task : ITask { private readonly Guid m_guid = Guid.NewGuid(); public MyGuid Guid { get { return m_guid; } set { /*Empty setter!*/ } } } 现在我不想在我脚下射击…… 或者,有一种更好的方法来管理这种需求? 谢谢! 编辑:在这里找到一些东西:Serializing private member data我正在读… 解决方法public Guid Guid { get { return m_guid; } set { if (value != null) Debugger.Log(0,"Warning","This property has an empty setter,just for serializing purpose!"); } } 如果您不小心自行设置了该值,则会在调试窗口中收到警告.另一方面,你绝对需要序列化器的setter,否则解串器永远不能在从文件中读取属性后指定属性值!所以setter不适合你,但序列化器正常运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |