2 回答

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 到對象,基本上任何您可以想象的瘋狂運行時依賴關系都無關緊要,依賴關系圖在運行時重新連接自身,并且無需任何儀式即可工作。它們也更快且免費。
- 2 回答
- 0 關注
- 153 瀏覽
添加回答
舉報