获得变量的名称
获得变量的名称函数
public static string GetVarName(Expression<Func<变量类型, 变量类型>> exp)
public static string GetVarName_Int(Expression<Func<int, int>> exp)
{
return ((MemberExpression)exp.Body).Member.Name;
}
使用时
int A=0;
GetVarName_MyCamera(p => LeftUpViewCamera);
为什么我们要新写一个函数呢?
如果我们直接使用A.ToString();我们获得的是“0”这个字符串,并不能获得“A”
我们使用时只需要将变量类型改成我们传入的变量类型就好了。如果是一个类的实例的话就将变量类型改成类名。
获得传入参数的参数类型与堆栈中的函数名
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
//using System.Reflection;
namespace 获得传入参数的参数类型与堆栈中的函数名
{
class Program
{
static void Main(string[] args)
{
string A = "cba";
string B = "abc";
MyFunc(ref A, B);
}
private static void MyFunc(ref 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);
}
}
}
}
不懂可以留言,看到了立刻回复。