【发布时间】:2009-12-04 17:25:31
【问题描述】:
我正在使用 MVVM,在我的一个 VM 中,我有一个 IsEditable 属性(它们都来自一个基类),一系列按钮使用该属性来确定它们的命令是否可以触发。
这个虚拟机还有一个子虚拟机,我需要将这个IsEditable属性回显到它,目前我正在覆盖我的OnPropertyChanged方法来检查正在刷新的属性是否是.Equals("IsEditable")。
我有一个唠叨告诉我这不是一个很好的做法,如果这个 IsEditable 将来被重命名,那么这个功能将默默地中断。有没有更好的方法来做到这一点,或者能够使用反射的属性名称,例如:
if (propertyRefreshName.Equals(IsEditable.Name))
{
// Echo down IsEditable change....
}
【问题讨论】:
-
在时间紧迫的代码中使用反射通常不是一个好主意,因为它可能非常慢。听起来您将在 UI 线程中运行它。减速可能一开始并不明显,但随着时间的推移,您可能会注意到您的应用开始无缘无故地爬网。我会推荐 Reed 建议的通知机制。
标签: c# reflection