Установите значение по умолчанию для свойства и сделайте его сериализуемым - PullRequest
2 голосов
/ 29 июля 2010

Мне нужно установить значение по умолчанию для свойства, но я не могу сделать это так:

private int prop = 1;

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

Поскольку мне нужно сериализовать этот класс, и если я это сделаю, я потеряюзначение по умолчанию.

Известно ли вам о каком-либо решении, которое работает после сериализации и до добавления атрибута в свойство?

Я работаю с c # с фреймворком 3.5.

Ответы [ 2 ]

5 голосов
/ 29 июля 2010

DefaultValueAttribute

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

О сериализации можно прочитать здесь: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

0 голосов
/ 29 июля 2010

Также есть:

    ''' <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

...