C# 使用反射获取参数的名称

C# 使用反射获取参数的名称,c#,reflection,compact-framework,C#,Reflection,Compact Framework,我有一个c#.net 2.0CF应用程序,我不仅希望获得传递给函数的参数的类型和值,还希望获得变量名 using System.Reflection; ParameterInfo[] info = MethodInfo.GetCurrentMethod().GetParameters(); System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(false); System.Diagnostics.Sta

我有一个c#.net 2.0CF应用程序,我不仅希望获得传递给函数的参数的类型和值,还希望获得变量名

using System.Reflection;


ParameterInfo[] info = MethodInfo.GetCurrentMethod().GetParameters();
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(false);
System.Diagnostics.StackFrame[] frames = trace.GetFrames();
例如:

void Show<PARAM>(PARAM p)
{
    Debug.WriteLine(string.Format("{0} {1} = {2}", typeof(PARAM).ToString, ???, p.ToString() );
}

bool foo = true;
Show(foo);
void显示(参数p)
{
Debug.WriteLine(string.Format(“{0}{1}={2}”),typeof(PARAM.ToString,?,p.ToString());
}
bool-foo=true;
秀(富);;
将输出“bool foo=true”

<>在C++中,我可以用 如果这不能在2.0中实现,那么可以在3.5或4.0中实现吗

谢谢,
PaulH

如果我记得正确,这在反射中是不可能的,因为变量名不在程序集中,
p
是一个变量名。

如果我记得正确,这在反射中是不可能的,因为变量名不在程序集中,
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()

我想可以从堆栈帧中检索该值

参数名称可以从

ParameterInfo[]info=MethodInfo.GetCurrentMethod().GetParameters()

输出

System.Int32值=10

输出


System.Int32 value=10

尝试使用PostSharp,它支持精简框架。

尝试使用PostSharp,它支持精简框架。

实现这一点的巧妙技巧(我认为需要C#3.0):实现这一点的巧妙技巧(我认为需要C#3.0):StackTrace和StackFrame在Compact Framework中不可用。此外,这是不正确的。
StackFrame
仅包含文件、行和列以及
MethodBase
。两者都不包含原始参数名。StackTrace和StackFrame在Compact Framework中不可用。此外,这也是不正确的。
StackFrame
打开ly包含文件、行和列以及
MethodBase
。两者都不包含原始参数名称。遗憾的是,CF没有MethodInfo.GetCurrentMethod()。请尝试使用PostSharp,因为它支持Compact Framework。遗憾的是,CF没有MethodInfo.GetCurrentMethod()。尝试使用PostSharp,因为它支持紧凑的框架。