2013-12-19 82 views
2

我想訪問調用方法中調用方法的參數。在嵌套調用方法中獲取父方法參數值

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

所以'logChild',您要訪問已傳遞到了'childCall'了'childName'說法? –

+1

簡答:不可能,將它作爲參數傳遞給'logChild'方法 –

回答

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 
    } 
} 
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) 
     } 
    } 
}