获取参数的旧名称

时间:2015-08-21 19:35:12

标签: c# logging naming-conventions

当我进行追踪时,我认为做一些像

这样的事情是有用的
//In the main function
{
  Log(myVariable);
}

将变量发送到像这样的通用函数

//In the Logger file
public static void TraceMessage<T>(T aVariable)
{
   string oldName=GetOldName(aVariable);
}

我想要&#34; myVariable&#34;被分配到oldNameGetOldName应该做什么?

这里有类似的问题:

get name of a variable or parameter

但在所有这些情况下,&#34; aVariable&#34;被分配到oldName

更新:旧名称是在将参数/变量发送到函数之前调用的内容。我在这里使用它作为变量只是为了便于解释。 原因是调试。当我的程序收到错误时,我想知道我的变量的值是什么。我目前必须发送Log(错误变量名变量值)。当您编写1000个这些Debug语句时,您会想到可以简化这些方法的方法。我要问的是简化问题。

为什么我的问题被投票,我该如何改进这个问题?

1 个答案:

答案 0 :(得分:1)

此信息需要由呼叫者捕获并提供。在C#6中,使用function multiRejectExample(){ return new Promise(function (resolve, reject){ if(statement){ console.log('statement 1'); reject(new Error('error')); return; } if(statement){ console.log('statement 2'); reject(new Error('error')); return; } }); } 运算符可以轻松实现,但您需要在调用者代码中应用它:

www.site.com?foo=1 OR 1 = 1 union select * from user_phone where user_phone.id_user = user.id

修改:如果您只想指定一次变量,可以使用:

nameof

并将您的Log(myVariable, nameof(myVariable)); 方法定义为:

Log(() => myVariable);

然而,这将比替代方案慢得多,is not guaranteed behaviour