Compartilhar via


Usar Redefinir e ShouldSerialize para controlar uma propriedade

Neste artigo, você aprenderá a criar os métodos Reset<PropertyName> e ShouldSerialize<PropertyName> para administrar uma propriedade na janela Propriedades no Visual Studio. Reset e ShouldSerialize são métodos opcionais que você pode fornecer para uma propriedade, se a propriedade não tiver um valor padrão simples. Se a propriedade tiver um valor padrão simples, você deve aplicar o DefaultValueAttribute e fornecer o valor padrão ao construtor da classe de atributo. Qualquer um desses mecanismos permite os seguintes recursos no designer:

  • A propriedade fornecerá indicação visual no navegador de propriedades se ela tiver sido modificada de seu valor padrão.
  • O usuário pode clicar com o botão direito do mouse na propriedade e escolher Redefinir para restaurar a propriedade para seu valor padrão.
  • O designer gera um código mais eficiente.

Para obter mais informações sobre propriedades, consulte Reiniciar e ShouldSerialize.

Código de suporte

Este artigo demonstra os métodos Reset e ShouldSerialize criando um controle de rosa de bússola. Se você estiver trabalhando com seu próprio controle de usuário, poderá ignorar esta seção.

  1. Adicione a seguinte enumeração ao código:

    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. Adicionar um controle de usuário chamado CompassRose.

  3. Adicione uma propriedade nomeada Direction do tipo Directions ao controle de usuário.

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

Reiniciar

O Reset<PropertyName> método redefine a propriedade correspondente <PropertyName> ao seu valor padrão.

O código a seguir redefine a Direction propriedade para None, que é considerado o valor padrão para o controle de rosa da bússola:

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

DeveSerializar

O ShouldSerialize<PropertyName> método retorna um valor booliano que indica se a propriedade de backup foi ou não alterada de seu valor padrão e deve ser serializada no código do designer.

O código a seguir retorna true quando a Direction propriedade não é igual None, indicando que uma direção foi escolhida:

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

Exemplo

O código a seguir mostra os métodos Reset e ShouldSerialize para a propriedade 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