<分区>
我看到了几个关于如何创建一个表达式来提取表达式中使用的变量名称的示例。这很好,但我需要提取作为函数参数传递的变量的名称,我需要在函数内部使用它。
在下面的示例中,我需要制作一些东西,使 Guess 函数能够返回“guessMyName”名称。
这可能吗?
class NameSample
{
static internal void Test()
{
string message1 = "";
string message2 = "";
string guessMyName = "my value";
// guessMyName: my value
message1 = GetName(() => guessMyName) + ": " + guessMyName;
// parameter: my value
message2 = Guess(guessMyName);
}
static internal string Guess(object parameter)
{
return GetName(() => parameter) + ": " + parameter;
}
static internal string GetName<T>(Expression<Func<T>> expr)
{
return (expr.Body as MemberExpression).Member.Name;
}
}