【发布时间】:2014-10-27 22:17:22
【问题描述】:
在 C# 4.0 中,我正在执行以下操作:
public string PropertyA
{
get;
set
{
DoSomething("PropertyA");
}
}
public string PropertyB
{
get;
set
{
DoSomething("PropertyB");
}
}
..我有很多这些属性,手动操作会很痛苦。有没有办法可以将其替换为:
public string PropertyA
{
get;
set
{
DoSomething(GetNameOfProperty());
}
}
..也许使用反射?
【问题讨论】:
-
它现在没有多大帮助,但 C# 6 将具有
nameof运算符,它将执行与您正在寻找的类似的操作,并进行编译时检查。 (假设您仍然需要在任何地方写两次属性名称,但编译器会告诉您是否拼错了。) -
听起来像是 XY 问题 - 你这样做是为了解决什么问题?
-
@Sayse 对我来说听起来不像。这是实现
INotifyPropertyChanged的常见模式。 -
@hvd - 非常正确,我已经有一段时间没有实现它了
-
如果您的目标是 .NET Framework 4.5,您可以使用 CallerMemberNameAttribute
标签: c# .net reflection