获得变量的名称获得传入参数的参数类型与堆栈中的函数名获得变量的名称

获得变量的名称

获得变量的名称函数
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=0GetVarName_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);
            }
        }
    }
}

不懂可以留言,看到了立刻回复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值