title: Get original property value type from ILogEventPropertyFactory
body: <p>I'm writing the simplest of enrichers: find all properties <code>XProperty</code> that have enum value types and add another property named <code>XPropertyString</code> which is the string representation of the Enum value.</p>
  <p>I started with something like this:</p>
  <pre><code>    public class EnumStringEnricher : ILogEventEnricher
      {
          public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
          {
              foreach(var p in logEvent.Properties)
              {
                  Type t = p.Value?.GetType();
                  if (t != null &amp;&amp; t.IsEnum)
                  {
                      //create property &lt;enum_property&gt;String with Enum description as value
                      LogEventProperty enumString = propertyFactory.CreateProperty($&quot;{p.Key}String&quot;, Enum.GetName(t, p.Value));
                      logEvent.AddPropertyIfAbsent(enumString);
                  }
              }
          }
      }
  </code></pre>
  <p>It seems that property values are &quot;wrapped-in&quot; Serilog's types <code>Serilog.Events.ScalarValue</code>, <code>Serilog.Events.SequenceValue</code> etc.</p>
  <p>Is there any way to get the underlying property value type in the above example?</p>