相关疑难解决方法(0)

在C#中引用属性本身.反射?通用?类型?

如果这个问题没有很好地制定,请耐心等待.不知道是问题的一部分.

我想要完成的一个例子可以在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)

到目前为止,我正在画一个空白.

c# reflection properties

5
推荐指数
1
解决办法
1822
查看次数

检索在Func中执行的调用方法的名称

我想获得被委派为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)

c# lambda delegates methodinfo

2
推荐指数
1
解决办法
996
查看次数

标签 统计

c# ×2

delegates ×1

lambda ×1

methodinfo ×1

properties ×1

reflection ×1