簡體   English   中英

C#中的“設置”類

[英]“Setting” class in C#

我正在使用C#和sliverlight閱讀Windows Phone 7的教程,我發現了這一行

public static class Settings
{
    public static readonly Setting<bool> IsRightHanded = 
        new Setting<bool>("IsRightHanded", true);

     public static readonly Setting<double> Threshold =
        new Setting<double>("Threshold", 1.5);
}

我無法在C#找到Setting類我想知道它是否在特殊命名空間下或需要額外的添加引用

如果它是一個自定義類,並且在教程中沒有描述,那你可以重新實現它嗎? 在我看來,這個類會有這樣的簽名:

public class Setting<T> 
{
    public Setting<T>(string name, T value)
    { 
        Name = name;
        Value = value;
    } 

    public string Name { get; set; }
    public T Value { get; set; }
}

當然,可能還有更多。 在本教程中,此類正在訪問/綁定哪些屬性?

如果您使用的是“101 Windows Phone 7 Apps”一書,則在第20章中實現並解釋了Setting類

這是我使用的Setting<T>類。 它支持通過INotifyPropertyChanged進行更改通知,這對綁定很有用(在WPF / SL / etc中)。 它還維護默認值的副本,以便在需要時可以重置。

作為一般規則, T應該是不可變的。

public class Setting<T> : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public event Action<T> Changed;

    private readonly T _defaultValue;
    private T _value;

    public Setting(T defaultValue)
    {
        _defaultValue = defaultValue;
        _value = defaultValue;
    }

    public T Value
    {
        get { return _value; }
        set
        {
            if (Equals(_value, value))
                return;
            _value = value;
            var evt = Changed;
            if (evt != null)
                evt(value);
            var evt2 = PropertyChanged;
            if (evt2 != null)
                evt2(this, new PropertyChangedEventArgs("Value"));
        }
    }

    public void ResetToDefault()
    {
        Value = _defaultValue;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM