我想在被调用的方法中访问调用方法的参数。
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
}
}
这可能吗?如果是这样,怎么样?
答案 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
}
}