在 Twitter 上,您提到通过 IDestructuringPolicy 实施应该相当简单
;)
我试图通过IDestructuringPolicy
让它工作,但是,恐怕它不起作用。
粗略查看代码库似乎表明(这里是 https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112)首先是PropertyValueConverter
将对象视为一个集合(所有JToken
都是IEnumerable
),因此从不费心检查IDestructuringPolicy
。
我_认为_也许给IDestructuringPolicy
更高的优先级(首先检查它,然后回到默认行为)可能会提供一个出路,但我可能完全错了,我只花了 2 分钟看这个代码。
我现在通过添加一个间接级别创建了一个快速解决方法。
我添加了一个名为JObjectWrapper
,它不是IEnumerable
并且我用它包装了我的JObject
。 现在我的IDestructuringPolicy
被调用,世界又是一个快乐的地方。
@kkozmic这个
好吧,这是一个令人讨厌的解决方法:) 它让我到达了我需要去的地方,但如果可能的话,我宁愿有一个更优雅的解决方案。
也许是新界面?
public interface ISequenceConversionPolicy
{
bool TryConvertToSequence(object value, ILogEventPropertyValueFactory propertyValueFactory, out SequenceValue result);
}
另外,也许:
public interface IDictionaryConversionPolicy
:)
暂时关闭,但如果有人热衷于尝试 PR,可以通过这个来工作。 感谢所有输入的人! :)
@kkozmic有没有机会我可以看看你的IDestructuringPolicy
(与包装器一起使用的那个)?
对不起,我没有那个代码了。
2015 年 2 月 3 日星期二凌晨 4:38:45 Harry McIntyre通知@github.com
写道:
@kkozmic https://github.com/kkozmic我有机会可以看看
您的 IDestructuringPolicy(与包装器一起使用的那个)?—
直接回复此邮件或在 GitHub 上查看
https://github.com/serilog/serilog/issues/30#issuecomment -72500600。
Build 1.4.168 消除了使这变得尴尬的限制; 很想看到一个 _Serilog.Extras.JObject_ 或类似的利用它:-)
感谢@Jaben解决这个问题!
好的!
@nblumhardt太棒了,谢谢!
最有用的评论
https://github.com/destructurama/json-net