C#函数体内,如何获取本函数的参数数目,类型及值?

dgmichaelz 2010-11-15 11:59:41
如想实现如下:
private void Func(int i,decimal d,string s)
{
//我想知道:
//1.Func的被调用参数的数量
//2.Func此时的参数类型
//3.Func此时的某个参数的具体值
//这个C#里实现否?
}
...全文
528 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dgmichaelz 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyazhe 的回复:]
C# code
private static void Func(int i, decimal d, string s)
{
//我想知道:
//1.Func的被调用参数的数量
//这个没看懂,被调用?参数的数量不就是3个么?
StackFrame frame = new StackFrame(0);
MethodBase m = frame……
[/Quote]

这只是个简单的例子,实际参数有一大堆,故有此问题?
dgmichaelz 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyazhe 的回复:]
C# code
private static void Func(int i, decimal d, string s)
{
//我想知道:
//1.Func的被调用参数的数量
//这个没看懂,被调用?参数的数量不就是3个么?
StackFrame frame = new StackFrame(0);
MethodBase m = frame……
[/Quote]

我试试,期待第3个问题解决中...
兔子-顾问 2010-11-16
  • 打赏
  • 举报
回复
private static void Func(int i, decimal d, string s)
{
//我想知道:
//1.Func的被调用参数的数量
//这个没看懂,被调用?参数的数量不就是3个么?
StackFrame frame = new StackFrame(0);
MethodBase m = frame.GetMethod();//当前方法,反射获得
ParameterInfo[] parameters = m.GetParameters();//反射参数列表
Console.WriteLine(parameters.Length);//3
//2.Func此时的参数类型
foreach (ParameterInfo p in parameters)
{
Console.WriteLine(p.ParameterType.Name + " " + p.Name);//输出3次
//Int32 i
//Decimal d
//String s
}
//3.Func此时的某个参数的具体值
//第三个不知道如何实现
}
dgmichaelz 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiehuanxie 的回复:]
MethodInfo.GetCurrentMethod();
[/Quote]

GetCurrentMethod只是在MethodBase中,我用的是VS2008TS,帮助中没有具体例子,能否给个范例?
xiehuanxie 2010-11-16
  • 打赏
  • 举报
回复
MethodInfo.GetCurrentMethod();

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧