CallerMemberName特性的使用
C# 6.0引入的一个特性,在属性或方法的参数中使用,用来获取调用者的成员名。
1.在方法中使用
public class MyClass { private string _myProperty; public string MyProperty { get { return _myProperty; } set { _myProperty = value; } } public void MyMethod([CallerMemberName] string propertyName = "") { Console.WriteLine($"调用我的是:{propertyName}"); } } internal class Program { static void Main(string[] args) { MyClass mc = new MyClass(); mc.MyProperty = "Hello World"; mc.MyMethod(); Console.ReadLine(); } }
执行结果:
2.在WPF的通知绑定中应用
通常我们定义是这样的,以下示例只有实现一个属性,若是有多个,每个都要写通知,参数(“Name”)很容易写错。应用时将不再更新UI。
public class MyClass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string name; public string Name { get { return name; } set { name = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name")); } } }
我们使用CallerMemberName特性来改造一下,再也不用去写这个参数了。
public class NotifyBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void DoNotify([CallerMemberName] string propName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName)); } } public class MyAnotherClass:NotifyBase { private string name; public string Name { get { return name; } set { name = value; this.DoNotify(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?