第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

說到get,C#有什么捷徑嗎?并設置;哪個調(diào)用onPropertyChanged?

說到get,C#有什么捷徑嗎?并設置;哪個調(diào)用onPropertyChanged?

C#
江戶川亂折騰 2021-11-14 14:35:42
我有這段代碼用于在我的應用程序中設置屬性:string _backgroundColor;public string BackgroundColor{    get => _backgroundColor;    set => SetProperty(ref _backgroundColor, value);}和public class ObservableObject : INotifyPropertyChanged{    protected virtual bool SetProperty<T>(            ref T backingStore, T value,            [CallerMemberName]string propertyName = "",            Action onChanged = null)    {        if (EqualityComparer<T>.Default.Equals(backingStore, value))            return false;        backingStore = value;        onChanged?.Invoke();        OnPropertyChanged(propertyName);        return true;     }     public event PropertyChangedEventHandler PropertyChanged;     protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = "") =>            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}我記得讀過一些關于我可以在 C# 中使用 { get; 的地方。放; }. 有什么辦法可以在這種情況下使用它,這樣我就不必自己繼續(xù)聲明局部變量了嗎?
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經(jīng)驗 獲得超8個贊

您的代碼已經(jīng)顯示了實現(xiàn) INotifyPropertyChanged 的類中屬性的典型快捷方式。使用普通的 C# 沒有更短的方法。如果你只使用 {get;set;} 你就失去了在 getter 和 setter 中調(diào)用任何東西的可能性。

如果您只是想自動添加 PropertyChanged 調(diào)用(并失去對它的一些控制),您可以查看面向方面的編程,例如使用PostSharp(商業(yè))或Fody(開源)。這些工具在編譯時/之后修改您的代碼,并允許規(guī)則修改您的代碼。


查看完整回答
反對 回復 2021-11-14
?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

我看到了使用 PostSharp 的 [NotifyPropertyChanged] 的建議,我的責任是提及一個更好的免費替代方案:Stepen Cleary 的計算屬性。 https://github.com/StephenCleary/CalculatedProperties/blob/master/README.md


說明:Postsharp 確實允許您編寫簡短的格式,即


string { get; set; }  

和火災通知。這是計算屬性的唯一優(yōu)勢,它們更冗長,但您仍然不需要支持字段:


{

    get { return Property.Get(string.Empty); }

    set { Property.Set(value); }

}

您很快就會發(fā)現(xiàn),盡管輸入的數(shù)量是一個小問題,但主要的挑戰(zhàn)是依賴于其他屬性的屬性,這就是 CalculatedProperties 在所有方面擊敗 PostSharp 的地方。


來自 PostSharp 文檔:


“如果屬性 getter 從其類或委托中調(diào)用虛擬方法,或引用另一個對象的屬性(不使用規(guī)范形式 this.field.Property),PostSharp 將生成錯誤,因為它無法在構建時解析此類依賴項. 當您的屬性 getter 包含復雜的數(shù)據(jù)流,例如循環(huán),或調(diào)用其他類的方法(屬性 getter 除外)時,同樣的限制適用。發(fā)生這種情況時,您可以重構代碼,以便 PostSharp 自動分析,或者你可以接管分析代碼的責任”


這些限制均不適用于計算屬性。它可以執(zhí)行循環(huán)、虛擬方法、LINQ 到對象,基本上任何您可以想象的瘋狂運行時依賴關系都無關緊要,依賴關系圖在運行時重新連接自身,并且無需任何儀式即可工作。它們也更快且免費。


查看完整回答
反對 回復 2021-11-14
  • 2 回答
  • 0 關注
  • 153 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號