1

这是我的日志签名

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 中传递的动态有关,我通过将其转换为在记录之前的实际类型来解决此问题。

4

1 回答 1

4

是的你可以。你只需要用这样的数组调用它:

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 } }
于 2013-09-24T21:56:53.020 回答