2 回答
TA贡献1858条经验 获得超8个赞
我看到了使用 PostSharp 的 [NotifyPropertyChanged] 的建议,我的责任是提及一个更好的免费替代方案:Stepen Cleary 的计算属性。 https://github.com/StephenCleary/CalculatedProperties/blob/master/README.md
说明:Postsharp 确实允许您编写简短的格式,即
string { get; set; }
和火灾通知。这是计算属性的唯一优势,它们更冗长,但您仍然不需要支持字段:
{
get { return Property.Get(string.Empty); }
set { Property.Set(value); }
}
您很快就会发现,尽管输入的数量是一个小问题,但主要的挑战是依赖于其他属性的属性,这就是 CalculatedProperties 在所有方面击败 PostSharp 的地方。
来自 PostSharp 文档:
“如果属性 getter 从其类或委托中调用虚拟方法,或引用另一个对象的属性(不使用规范形式 this.field.Property),PostSharp 将生成错误,因为它无法在构建时解析此类依赖项. 当您的属性 getter 包含复杂的数据流,例如循环,或调用其他类的方法(属性 getter 除外)时,同样的限制适用。发生这种情况时,您可以重构代码,以便 PostSharp 自动分析,或者你可以接管分析代码的责任”
这些限制均不适用于计算属性。它可以执行循环、虚拟方法、LINQ 到对象,基本上任何您可以想象的疯狂运行时依赖关系都无关紧要,依赖关系图在运行时重新连接自身,并且无需任何仪式即可工作。它们也更快且免费。
- 2 回答
- 0 关注
- 133 浏览
添加回答
举报