Bir özelliği denetlemek için Reset ve ShouldSerialize kullanma

Bu makalede, Visual Studio'da Reset<PropertyName> penceresinin özelliğini yönetmek için ShouldSerialize<PropertyName> ve yöntemlerini oluşturmayı öğreneceksiniz. Reset ve ShouldSerialize, özelliğin basit bir varsayılan değeri yoksa, bir özellik için sağlayabileceğiniz isteğe bağlı yöntemlerdir. Özelliğin basit bir varsayılan değeri varsa, DefaultValueAttribute uygulamanız ve bunun yerine öznitelik sınıfı oluşturucusunun varsayılan değerini sağlamanız gerekir. Bu mekanizmalardan biri tasarımcıda aşağıdaki özellikleri etkinleştirir:

  • özelliği, varsayılan değerinden değiştirilmişse özellik tarayıcısında görsel gösterge sağlar.
  • Kullanıcı özelliğe sağ tıklayıp Sıfırla'yı seçerek özelliği varsayılan değerine geri yükleyebilir.
  • Tasarımcı daha verimli kod oluşturur.

Özellikler hakkında daha fazla bilgi için bkz. Reset ve ShouldSerialize.

Destekleyici kod

Bu makale, pusula gülü kontrolü oluşturarak Reset ve ShouldSerialize yöntemlerini göstermektedir. Kendi kullanıcı denetiminizle çalışıyorsanız bu bölümü atlayabilirsiniz.

  1. Kodunuza aşağıdaki numaralandırmayı ekleyin:

    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. CompassRoseadlı bir kullanıcı denetimi ekleyin.

  3. Kullanıcı denetimine Direction türündeki Directions adlı bir özellik ekleyin.

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

Ayarla

Reset<PropertyName> yöntemi, karşılık gelen <PropertyName> özelliğini varsayılan değerine sıfırlar.

Aşağıdaki kod, pusula gül denetimi için varsayılan değer olarak kabul edilen Direction özelliğini Noneolarak sıfırlar:

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

SerializeEdilmeli

ShouldSerialize<PropertyName> yöntemi, backing özelliğinin varsayılan değerinden değişip değişmediğini ve tasarımcının koduna seri hale getirilip getirilmeyeceğini gösteren bir boole değeri döndürür.

aşağıdaki kod, Direction özelliği Noneeşit olmadığında true değerini döndürür ve bir yönün seçildiğini gösterir:

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

Örnek

Aşağıdaki kod, Reset özelliği için ShouldSerialize ve Direction yöntemlerini gösterir:

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