在嵌套的被调用方法中获取父方法参数值

时间:2013-12-19 11:04:34

标签: c# c#-4.0 reflection

我想在被调用的方法中访问调用方法的参数。

public class parent 
{
    public void childCall(string childName)
    {
        var childObj = new child();
        //calling child class method
        childObj.logChild();
    }
}

public class child 
{
    public void logChild() 
    {
        // Here i want to use reflection and fetch method parameter,
        // which was passed in this current method call
    }
}

这可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:3)

在.NET中读取调用者的参数是禁忌 - 如果被调用的函数可以访问未传递给它的参数,那么这将是一个安全漏洞。呼叫者必须愿意提供其参数,这意味着它需要符合某些设计。

可能的设计是接受子对象中的任何内容:

public class Child
{
    public void logChild(params object[] parameters)
    {
        foreach (object value in parameters)
        {
            Type type = typeof(object);
            if (!object.ReferenceEquals(value, null))
                type = value.GetType();
            // now do something with (type, value)
        }
    }
}

答案 1 :(得分:1)

为什么不能只将参数添加到logChild()并传入您需要的值:

public class parent 
{
    public void childCall(string childName) 
    {
        var childObj = new child();
        childObj.logChild(childName);
    }
}

public class child 
{
    public void logChild(string childName) 
    {
        //Do something with childName
    }
}