加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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!*/ }
    }
}

现在我不想在我脚下射击……
我可以通过某种方式将MyGuid属性的setter设置为“可弃”或“禁用”?
如果我尝试使用setter,Visual Studio警告我会很好.

或者,有一种更好的方法来管理这种需求?

谢谢!

编辑:在这里找到一些东西: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不适合你,但序列化器正常运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读