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 AMハリーマッキンタイア[email protected]
書きました:
@kkozmichttps : //github.com/kkozmic何かチャンスがあれば見て
IDestructuringPolicy(ラッパーで機能するもの)?—
このメールに直接返信するか、GitHubで表示してください
https://github.com/serilog/serilog/issues/30#issuecomment-72500600 。
ビルド1.4.168は、これを厄介にした制限を取り除きます。 それを利用する_Serilog.Extras.JObject_または同様のものを見たいです:-)
これを釘付けにしてくれてありがとう@Jaben !
良い!
@nblumhardtそれは素晴らしいです、ありがとう!
最も参考になるコメント
https://github.com/destructurama/json-net