Поделиться через


Используйте Reset и ShouldSerialize для управления свойством.

В этой статье вы узнаете, как создать методы и для управления свойством для окна свойств в Visual Studio. Reset и ShouldSerialize являются необязательными методами, которые можно указать для свойства, если свойство не имеет простого значения по умолчанию. Если свойство имеет простое значение по умолчанию, следует применить DefaultValueAttribute и указать значение по умолчанию конструктору класса атрибутов. Любой из этих механизмов включает следующие функции в конструкторе:

  • Свойство предоставляет визуальное указание в браузере свойств, если оно было изменено со значения по умолчанию.
  • Пользователь может щелкнуть правой кнопкой мыши на свойстве и выбрать Сброс, чтобы восстановить свойство до значения по умолчанию.
  • Конструктор создает более эффективный код.

Дополнительные сведения о свойствах см. в разделе Reset и ShouldSerialize.

Вспомогательный код

В этой статье показано, как Reset и ShouldSerialize методы путем создания элемента управления компасом розы. Если вы работаете с собственным пользовательским элементом управления, вы можете пропустить этот раздел.

  1. Добавьте в ваш код следующее перечисление:

    public enum Directions
    {
        None,
        North,
        NorthEast,
        East,
        SouthEast,
        South,
        SouthWest,
        West,
        NorthWest,
    }
    
    Public Enum Directions
        None
        North
        NorthEast
        East
        SouthEast
        South
        SouthWest
        West
        NorthWest
    End Enum
    
  2. Добавьте пользовательский элемент управления с именем CompassRose.

  3. Добавьте свойство с именем Direction типа Directions в элемент управления пользователем.

    public Directions Direction { get; set; } = Directions.None;
    
    Public Property Direction As Directions = Directions.None
    

Сброс

Метод Reset<PropertyName> сбрасывает соответствующее свойство <PropertyName> к значению по умолчанию.

Следующий код сбрасывает свойство Direction на None, которое считается значением по умолчанию для элемента управления компасной розы.

private void ResetDirection() =>
    Direction = Directions.None;
Private Sub ResetDirection()
    Direction = Directions.None
End Sub

Следует сериализировать

Метод ShouldSerialize<PropertyName> возвращает логическое значение, указывающее, изменилось ли свойство резервного копирования со значения по умолчанию и должно быть сериализовано в код конструктора.

Следующий код возвращает значение true, если свойство Direction не равно None, указывающее, что выбрано направление:

private bool ShouldSerializeDirection() =>
    Direction != Directions.None;
Private Function ShouldSerializeDirection() As Boolean
    Return Direction <> Directions.None
End Function

Пример

В следующем коде показаны методы Reset и ShouldSerialize для свойства Direction:

public partial class CompassRose : UserControl
{
    public Directions Direction { get; set; } = Directions.None;

    public CompassRose() =>
        InitializeComponent();

    private void ResetDirection() =>
        Direction = Directions.None;

    private bool ShouldSerializeDirection() =>
        Direction != Directions.None;
}
Public Class CompassRose

    Public Property Direction As Directions = Directions.None

    Private Sub ResetDirection()
        Direction = Directions.None
    End Sub

    Private Function ShouldSerializeDirection() As Boolean
        Return Direction <> Directions.None
    End Function

End Class