【发布时间】:2011-09-02 11:01:32
【问题描述】:
我需要创建一个可序列化的类。 在这个类中,我有一个 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,最好让 Visual Studio 警告我。
或者,有更好的方法来管理这种需求?
谢谢!
编辑:在这里找到了一些东西:Serializing private member data我正在阅读...
【问题讨论】:
-
如果你不打算反序列化它,为什么要序列化它?您可以在属性上使用
[NonSerialized]或System.Xml.Serialization.XmlIgnore]属性吗?
标签: c# .net serialization serializable