0

是否可以登录传入参数是通用的方法?例如

public async Task<TResult> Handle(TQuery query)
{
    var watch = Stopwatch.StartNew();
    var result = await _handler.Handle(query);
    watch.Stop();
    Serilog.Log.Logger.Information("Processed {@" + query.GetType().Name + "} in {Elapsed} ms",
        query.GetType().Name, watch.ElapsedMilliseconds);
    return result;
}

请注意,在上面,我在模板中使用字符串连接,我不确定这是最佳实践。还有另一种记录传入对象的方法吗?

4

1 回答 1

4

您是否考虑过只传递查询对象的类型或查询对象本身?例如:

Log.Information("Processed {@Query} in {Elapsed} ms", query, watch.ElapsedMilliseconds);

这将打印输出,如:

Processed SomeQuery { SomeProp = "foo" } in 100 ms
于 2014-11-30T21:55:18.223 回答