使用空属性setter时引发Visual Studio警告

本文关键字:Visual Studio 警告 属性 setter | 更新日期: 2023-09-27 17:57:39

我需要使类Serializable。在这个类中,我有一个MyGuid只读属性,我希望它是可序列化的,但不可反序列化的(属性在后台字段中初始化)。使用基本序列化.NET功能,你知道,有一个重新命名的属性会使反序列化失败,因为它无法反序列化只读属性。所以我决定创建一个带有支持字段的公共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警告我。

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

谢谢!

编辑:在这里找到了一些东西:正在序列化我正在读取的私有成员数据。。。

使用空属性setter时引发Visual Studio警告

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不是为您准备的,而是为序列化程序正常工作准备的。

如果你不包括这个集合,它会自动知道它是只读的,所以不会让你设置它。当你尝试时,它会在你的代码中标记错误