个人随笔
技术改变世界

.NET 4.5 CallerMemberNameAttribute 标记

嘿嘿,这个在MVVM设计模式中是个极好的东西。

我们在MVVM使用属性通知,都要调用类似 RaisePropertyChanged("Name") 这样的操作,来通知属性的变更。

这样有一个尴尬就是属性名称在代码中更改的时候这里的Name没跟着一起更改,编译也不会报错。显得比较糟糕,而且我们写起来也麻烦,写错一个字母也出错 绑定不了之类的事情发生。

 

看看CallerMemberNameAttribute带来的解决方案

有了CallerMemberNameAttribute标记,那么我构建了这样一个方法来更轻松的实现属性通知。

protected void UpdateProperty<T>(ref T properValue, T newValue, [CallerMemberName] string properName = "")
{
    if (object.Equals(properValue, newValue))
       return;

    properValue = newValue;
    RaisePropertyChanged(properName);
}

我构造了这样的方法,继承使用是很不错的。

那么我会怎么编写属性通知呢?如下代码示例:

private string _loginId;

public string LoginId
{
    get { return _loginId; }
    set { UpdateProperty(ref _loginId, value); }
}

是不是方便了许多?嘿嘿。不过要基础这个是支持在.NET 4.5以上版本滴。

转载请注明出处王旭博客 » .NET 4.5 CallerMemberNameAttribute 标记

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址