[英]using reflection to get the name of a parameter
我有一個ac#.net 2.0CF應用程序,我不僅要獲取傳遞給函數的參數的類型和值,還要獲取變量名。
例如:
void Show<PARAM>(PARAM p)
{
Debug.WriteLine(string.Format("{0} {1} = {2}", typeof(PARAM).ToString, ???, p.ToString() );
}
bool foo = true;
Show(foo);
將輸出“ bool foo = true”;
在C ++中,我可以使用##
預處理程序宏來執行此操作。
如果無法在2.0中完成,可以在3.5或4.0中完成嗎?
謝謝PaulH
如果我沒記錯的話,反射是不可能的,因為變量名不在程序集中,而p
是變量名。
using System.Reflection;
ParameterInfo[] info = MethodInfo.GetCurrentMethod().GetParameters();
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(false);
System.Diagnostics.StackFrame[] frames = trace.GetFrames();
我猜可以從堆棧框架中檢索值。
可以從
ParameterInfo [] info = MethodInfo.GetCurrentMethod()。GetParameters();
public void Show(int value)
{
ParameterInfo[] info = MethodInfo.GetCurrentMethod().GetParameters();
Trace.WriteLine(string.Format("{0} {1}={2}", info[0].ParameterType.ToString(), info[0].Name, value.ToString()));
}
輸出
System.Int32值= 10
嘗試使用PostSharp,它具有對Compact Framework的支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.