【发布时间】:2011-09-18 12:06:40
【问题描述】:
我一直在四处寻找,但似乎找不到我要找的东西,所以我会在这里试一试。
情况: 我有 MainWindow 和 MainWindowData 类。在 MainWindowData 中只有使用属性 UpdateGUI 定义的公共属性。
public class UpdateGUI : Attribute { }
public class MainWindowData
{
[UpdateGUI]
public string TESTVAR { get; set; }
}
现在我想为 MainWindowData 中每个属性的 setter 方法添加一个方法。更具体:
void OnPropertyChanged(String PropertyName);
我想我会在 MainWindow 构造函数中获取所有 UpdateGUI 属性,然后以某种方式向它添加另一个方法,但这就是我卡住的地方。 我使用此代码来获取所有属性,这很有效:
List<PropertyInfo> properties = (from pi in typeof(MainWindowData).GetProperties()
where pi.GetCustomAttributes(typeof(UpdateGUI), false).Any()
select pi).ToList();
这给了我一个很好的列表,列出了我必须更新的所有属性。
所以问题是:我怎样才能使属性从以下位置动态转换:
[UpdateGUI]
public string TESTVAR { get; set; }
到:
[UpdateGUI]
private string _TESTVAR;
public string TESTVAR {
get {
return _TESTVAR;
}
set {
_TESTVAR = value;
OnPropertyChanged("TESTVAR");
}
}
感谢您的帮助!将不胜感激:)
问候
【问题讨论】:
-
+1 有趣的问题,很高兴看到这个结果。
标签: c# dynamic methods properties setter