Serilog 省略事件序列化的基础 class 属性

Serilog omitting base class properties on event serialization

我正在使用 Serilog 序列化事件,这些事件可以从广泛的服务中发送,这些服务扩展了包含任何事件的基本信息的基本摘要 class,以及子 class es 添加所有需要的特定事件信息。

问题是在日志中只存储了子 class 属性而忽略了父属性。有没有办法强制 serilog 在其序列化中包含基础 class 属性?

我尝试将基础 class 更改为非抽象并将 Destructor.ToMaximumLength 设置为 10000,但仍然没有成功。

public abstract class AnalyticsEvent
{
    public readonly Guid EventId = Guid.NewGuid();
    public readonly DateTimeOffset EventTime = DateTimeOffset.UtcNow;
    public readonly EventGroups EventGroup;
    public readonly Guid? TransactionId;
    public readonly string EventName;

    public AnalyticsEvent(EventGroups eventGroup, Guid? transactionId, string eventName)
    {
        EventGroup = eventGroup;
        TransactionId = transactionId;
        EventName = eventName;
    }
}

Serilog 的解构只获取属性;您基地 class 上的成员是字段。将它们转换为属性应该会按预期工作。