获得变量的名称
获得变量的名称函数
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);}}}
}
不懂可以留言,看到了立刻回复。