This question already has answers here:
Named arguments call in C# with variable parameter number
(2个答案)
6年前关闭。
这是我的日志签名
我试图用它说
我怎样才能做到这一点?我无法在网上找到它,我希望这是可能的。我尝试了一种匿名类型,但没有奏效。
解析度:
我最终使用下面的示例。我在使用其他语法时遇到了不同的错误,因此希望确保将其保存在此处。
编辑:
我的问题最终与在formatParams中传递动态有关,我通过将其强制转换为在记录日志之前的类型来解决此问题。
对于单个参数,这不是必需的,您可以使用:
请注意,在许多情况下,您还可以使用隐式类型的数组:
但是,这将传递一个对象数组,其中包含一个整数数组。参数值实际上看起来像这样:
(2个答案)
6年前关闭。
这是我的日志签名
public static void Debug(string message,Exception exception = null,object model = null,object userId = null,[CallerMemberName] string memberName = "",params object[] formatParams)
我试图用它说
Logger.Debug("My message: {0} {1}", formatParams:1,2)
我怎样才能做到这一点?我无法在网上找到它,我希望这是可能的。我尝试了一种匿名类型,但没有奏效。
Logger.Debug("My message: {0} {1}", formatParams: new{1,2})
解析度:
我最终使用下面的示例。我在使用其他语法时遇到了不同的错误,因此希望确保将其保存在此处。
Logger.Debug("My message: {0} {1} {2}", formatParams: new object[] { 1, "string", 123.12m });
编辑:
我的问题最终与在formatParams中传递动态有关,我通过将其强制转换为在记录日志之前的类型来解决此问题。
最佳答案
是的你可以。您只需要使用如下数组调用它:
Logger.Debug("My message: {0} {1}", formatParams: new object[] { 1, 2 });
对于单个参数,这不是必需的,您可以使用:
Logger.Debug("My message: {0}", formatParams: 1);
请注意,在许多情况下,您还可以使用隐式类型的数组:
Logger.Debug("My message: {0} {1}", formatParams: new[] { 1, 2 });
但是,这将传递一个对象数组,其中包含一个整数数组。参数值实际上看起来像这样:
new object[] { new int[] { 1, 2 } }