【问题标题】:Get the name of the parameter that is passed to function [duplicate]获取传递给函数的参数的名称[重复]
【发布时间】:2012-12-28 05:40:32
【问题描述】:

可能重复:
get name of a variable or parameter

我有这个功能。

public void AddVariable( String str)
{
    Response.Write(str); // will write the value of str
}

但我需要写下传递给函数的字符串变量的名称。

例如:

String temp = "test Variable";
AddVariable(temp);

这里我需要在我的函数中获取变量的name,而不是value

即,我需要在我的函数中获取“temp”,而不是“test Variable”。

有可能吗?

【问题讨论】:

  • @rs,我试过那个答案,但我只能得到变量名'str',而不是我传入的那个
  • @AkhilSekharan :看到这篇文章stackoverflow.com/questions/214086/…
  • @pRosper K,返回的是参数名称,不是我传入的字符串名称。:(

标签: c# asp.net


【解决方案1】:

你可以得到函数内部的变量名(“str”),但是你不能得到传递给函数的变量名,除非你把它作为第二个参数传入。

获取传递给函数的变量的名称没有意义,因为如果传递了诸如AddVariable("test variable") 之类的文字,则可能甚至没有变量。

【讨论】:

    【解决方案2】:

    您不需要参数名称(可能来自反射),而是需要作为参数传递的变量名称。 AFAIK,出于所有实际目的,这对于函数内的代码是不可能的。

    另一方面,可以对应用程序域中加载的所有程序集进行代码分析并找到对您的方法的所有调用,然后进行堆栈遍历以确定可能的调用,以便您能够在调用方法中确定变量名(如果调用方法中可能有很多调用,则很难猜测变量名,然后您必须依赖 IL 偏移量等),但这太复杂了。

    也许,您可以说明这些要求的原因,可以有一些替代方案。例如,您可以在您的方法代码中获取和记录堆栈跟踪,以便进行故障排除。

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 2013-01-21
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多