使用空属性设置器时引发Visual Studio警告

时间:2011-05-26 09:48:39

标签: c# .net serialization serializable

我需要创建一个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我正在阅读...

2 个答案:

答案 0 :(得分:2)

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不适合你,但序列化器可以正常运行。

答案 1 :(得分:0)

如果你不包括该套装,它会自动知道它的只读,所以不会让你设置它。然后,当您尝试

时,它会标记代码中的错误