C# 如何通过形参获得实参的名字?
我在网上看到一段代码,可获得形参的名字:
(我写完整了)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string string1 = "dgd";
string string2 = "gfd";
MyFunc(string1, string2);
}
private static void MyFunc(string str1, string str2)
{
var stackTrace = new StackTrace();
var stackFrame = stackTrace.GetFrame(0);
// 如果要获取上层函数信息调用 GetFrame(1), 这样就可以写成通用函数了
var methodBase = stackFrame.GetMethod();
Console.WriteLine("函数名:" + methodBase.Name);
var parameterInfos = methodBase.GetParameters();
foreach (var parameterInfo in parameterInfos)
{
Console.WriteLine("参数信息:" + parameterInfo.Name);
}
}
}
}
运行结果:
函数名:MyFunc
参数信息:str1
参数信息:str2
请按任意键继续. . .
但是,我想要的是:
实参名称:string1
实参名称:string2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
参考 https://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getmethodbody(v=vs.110).aspx
七年后,这个问题终于通过【调用方参数表达式】解决了:
http://dlgcy.com/c-sharp-CallerArgumentExpressionAttribute/