我正在努力思考C# 5's Caller Information feature
的实际使用情况在什么情况下你需要知道谁叫你的方法?除了跟踪和可能的调试之外还有什么其他用法?
它是面向方面编程的实现吗?
答案 0 :(得分:8)
CallerMemberName
的一个非常好的用途是使用WPF和数据绑定时。
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
是INotifyPropertyChanged
的便捷实现。
答案 1 :(得分:2)
我不确定它是否是AOP,但对我来说,它在实现INotifyPropertyChanged时非常有用。实际上,微软确实提供了一个关于4.0和4.5之间差异的好样本:
4.5:http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
4.0:http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.100).aspx
它非常有用,特别是当您在WPF或WinForm中进行大量数据绑定时。虽然你可以使用反射来实现类似的行为,但它减少了使用硬编码属性名称的错误。