如果这个问题没有很好地制定,请耐心等待.不知道是问题的一部分.
我想要完成的一个例子可以在WPF中的PropertyChangedEventArgs中找到.如果要在WPF中标记属性已更改,则执行以下操作:
PropertyChanged(this, new PropertyChangedEventArgs("propertyName"));
Run Code Online (Sandbox Code Playgroud)
您将字符串传递给PropertyChangedEventArgs,它引用已更改的属性名称.
您可以想象我不希望在我的代码中使用硬编码字符串作为属性名称.当然,重构重命名错过了它,这使得它不仅在美学上没有吸引力,而且还容易出错.
我更倾向于参考房产本身 ...不知何故.
PropertyChanged(this, new PropertyChangedEventArgs(?SomeClass.PropertyName?));
Run Code Online (Sandbox Code Playgroud)
看起来我应该能够用一个简短的方法来包装它,让我说出类似上面的内容.
private void MyPropertyChanged(??) {
PropertyChanged(this, new PropertyChangedEventArgs(??.ToString()??));
}
... so I can say something like:
MyPropertyChanged(Person.Name); //where I'm interested in the property *itself*
Run Code Online (Sandbox Code Playgroud)
到目前为止,我正在画一个空白.
我想获得被委派为Func的方法的名称.
Func<MyObject, object> func = x => x.DoSomeMethod();
string name = ExtractMethodName(func); // should equal "DoSomeMethod"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
- 吹牛的权利 -
Make ExtractMethodName也可以使用属性调用,让它返回该实例中的属性名称.
例如.
Func<MyObject, object> func = x => x.Property;
string name = ExtractMethodName(func); // should equal "Property"
Run Code Online (Sandbox Code Playgroud)