无论如何以程序方式辨别哪个属性代码正在执行?

时间:2010-09-10 09:24:28

标签: c# reflection

我想打电话给

public static void Foo()
{
    PropertyInfo prop = xxx;
} 

来自

public string Bar()
{
   get { return Foo(); }
}

我希望prop成为调用属性的PropertyInfo,我不知道xxx会是什么。

任何想法的人?

善,

2 个答案:

答案 0 :(得分:4)

public string Bar
{
    get { return Foo(GetType().GetProperty("Bar")); }
}

答案 1 :(得分:2)

属性实际上有两种方法:get_PropertyName和set_PropertyName。您可以使用StackTrace类获取这些方法名称:

public string MethodName
{
  get { return new StackTrace(true).GetFrame(0).GetMethod().Name.Substring(4); }
}

Substring调用删除了方法名称的get_部分,因此只获取属性名称。