INotifyPropertyChanged以C#.Net 3.0为目标

Ber*_*ard 3 .net c# inotifypropertychanged

我一直在努力使用mvp在C#中连接一些winforms.UI开发并不完全是我强大的套件,我正在寻找一种实现INotifyPropertyChanged的重构验证方法,而不必求助于字符串来触发更改通知.

MSDN的例子http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx大多数我见过的其他罢工我走错路了与问候到这样做至少所有的事实上,如果您重构属性,必须更改字符串.

所有我看到的计算器使用表达式和FUNC其他选项,遗憾的是在传统的解决方案,我很支持,所以我想知道如果任何人有办法复制使用表达式树来获得属性名称的当前的解决方案没有可用的设备.

我见过的解决方案的一个例子.

public static string GetPropertyName<T, TReturn>(Expression<Func<T, TReturn>>      expression) 
{
 MemberExpression body = (MemberExpression)expression.Body; return body.Member.Name; 
}
Run Code Online (Sandbox Code Playgroud)

干杯

Ani*_*Ani 6

对于.NET 3.0,实现防重构的实现方式最好的方法 INotifyPropertyChanged是通过某种形式的代码生成.例如,PostSharp(AOP工具)使用IL编织在后编译步骤中修改生成的程序集.您可以在INotifyPropertyChanged 这里找到相关的样本.

顺便说一句,最先进的(C#5)实现方式INotifyPropertyChanged 根本不需要特殊工具:有[CallerMemberName]属性.