【发布时间】:2019-04-12 00:24:24
【问题描述】:
我正在记录异常。现在我有能力用任何参数抛出异常并将它们提供给 log 方法。我想在日志消息中显示每个参数的名称、类型和值。类型和值没有问题,但我无法获取变量的名称。我不想让参数的数量翻倍,在抛出时为每个参数添加nameof(Value)。
这就是我使用不同参数的方式:
throw new TestException(new object[]{ var0,
var1,
var2,
var3,
var4 });
这就是我不想扔的方式:
throw new TestException(new object[]{ var0, nameof(var0)
var1, nameof(var1)
var2, nameof(var2)
var3, nameof(var3)
var4, nameof(var4) });
这些是我对在对象中包装数据的想法:
public class ArgWrapper
{
public ArgWrapper()
{
}
public string Type { get; set; }
public string Name { get; set; }
public object Value { get; set; }
}
因此,我希望收集具有此类字段的对象,因此我将记录有关每个参数的信息,例如:{ Type: "type", Name: "name", Value: "value" }
【问题讨论】:
-
您可以使用
throw new TestException().AlsoLog(x, nameof(x)).AlsoLog(y, nameof(y)) ...之类的内容使其更具可读性,否则请参阅Finding the variable name passed to a function
标签: c#