我在网上看到一段代码,可获得形参的名字:
(我写完整了)
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
七年后,这个问题终于通过【调用方参数表达式】解决了:
http://dlgcy.com/c-sharp-CallerArgumentExpressionAttribute/