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(); } } }
标签:CallerMemberName,string,特性,class,使用,MyClass,public,name From: https://www.cnblogs.com/duju/p/17514408.html