请告诉我如何从实例变量中获取字段名称。
public class MainClass
{
public void output()
{
Action valAction = new TestClass().testAction;
//I want to output string 'testAction' from valAction variable here
Debug.WriteLine(valAction.????);
}
}
public class TestClass
{
public Action testAction = () => { };
}
答案 0 :(得分:1)
听起来你有XY Problem。
事实是,不可能按字面意思做你想要的。将字段testAction
保存的值复制到另一个变量(局部变量valAction
)后,不再涉及原始字段。
考虑一个更简单的例子:
class A
{
int i = 17;
void M()
{
int j = i;
}
}
您是否希望以某种方式从变量j
中收集" i" ?我希望不是。变量j
包含32位整数值。它并不关心价值来自何处,也不应该关注。
同样地,valAction
不会保存有关 所获得的值的任何信息。它只包含价值本身。
如果您可以解释您在此处尝试解决的更广泛问题,您可以获得解决方案。但是你没有问过这个问题。你实际上是在寻求不可能的事情。
答案 1 :(得分:0)
替换
Debug.WriteLine(valAction.????);
带
Debug.WriteLine((Type.GetType(a.ToString()).GetMember("testAction"))[0]);