title: Using Serilog to log generic object
body: <p>Is it possible to log in a method where the incoming argument is generic?  For example</p>
  
  <pre><code>public async Task&lt;TResult&gt; 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;
  }
  </code></pre>
  
  <p>Note in the above, I'm using string concatenation in the template and I'm not sure this is a best practice.  Is there another way to log the incoming object?</p>