CSharp - C# 使用反射从父类获取自己的属性名

  显示原文与译文双语对照的内容

可以获取当前类被从它的中调用的类中分配给的属性的名称。

假设我有三个类:


class Parent1


{


 public Child myName;



 public void Foo()


 {


 myName.Method();


 }


}



class Parent2


{


 public Child mySecondName;



 public void Foo()


 {


 mySecondName.Method();


 }


}



class Child


{


 public void Method()


 {


 Log(__propertyName__);


 }


}



如果从 mySecondName 调用 Method,则在从 Parent1 和调用 Method 时,我想要 LogmyName

是否可以使用反射而不是通过字符串中的字符串传递名称( 我想用于调试)

时间: 原作者:

使用 StackTrace 至少可以获取调用所发出的方法和类:


System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace();


Type calledFromType = trace.GetFrame(1).GetMethod().ReflectedType;



这应该会给你 Parent1 类型。

我不认为有方法来获取调用该方法的变量的名称。

当然可以枚举 calledFromType的所有字段和属性,看看它们中的一个是 Child 类型,但是在调用字段或者属性时。

原作者:
...