如何从实例变量中获取字段名称

时间:2017-03-07 04:03:22

标签: c# reflection

请告诉我如何从实例变量中获取字段名称。

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 = () => { };
}

2 个答案:

答案 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]);