将默认值设置为属性并使其可序列化

时间:2010-07-29 19:09:28

标签: c# .net properties default serializable

我需要为属性设置默认值,但我不能这样做:

private int prop = 1;

public Prop
{
     get { return prop;} ...
}

因为我需要序列化这个类,如果我这样做,我会松开默认值。

您是否了解在序列化之后和以前添加属性的任何解决方案?

我正在使用框架3.5的c#。

2 个答案:

答案 0 :(得分:5)

DefaultValueAttribute

[DefaultValue("SomeValue")]
public string Prop { get; set; }

您可以在此处阅读有关序列化的大量内容:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

答案 1 :(得分:0)

还有:

    ''' <summary>
    ''' The defaults size for the list item.
    ''' </summary>
''' <value>Size.</value>
''' <returns>Size.</returns>
''' <remarks></remarks>
<Category("Appearance")> _
<Description("The defaults size for the list item.")> _
  Public Property DefaultItemSize() As Size Implements IVisualList.DefaultItemSize
    Get
        Return m_DefaultItemSize
    End Get
    Set(ByVal value As Size)
        m_DefaultItemSize = value
    End Set
End Property

Protected Overridable Function ShouldSerializeDefaultItemSize() As Boolean
    If m_DefaultItemSize.Equals(New Size(100, m_CellHeight)) Then Return False
    Return True
End Function

另一种选择可能是使用这些属性:

[OnSerializing()]

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.onserializingattribute.aspx

[OnDeserializing()]

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializingattribute.aspx