Sur Twitter, vous avez mentionné qu'il devrait être assez simple à mettre en œuvre via IDestructuringPolicy
;)
J'essayais de faire fonctionner cela via IDestructuringPolicy
mais j'ai peur que cela ne fonctionne pas.
Un coup d'œil rapide dans la base de code semble indiquer (ici https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112) que PropertyValueConverter
premier traite les objets comme une collection (tous les JToken
s sont IEnumerable
) et ne prend donc jamais la peine de vérifier avec IDestructuringPolicy
.
Je pense que peut-être donner au IDestructuringPolicy
une priorité plus élevée (en le vérifiant d'abord, puis en revenant au comportement par défaut) pourrait offrir une issue, mais je peux me tromper complètement, je n'ai passé que 2 minutes à regarder ça code.
J'ai créé une solution de contournement rapide pour l'instant en... ajoutant un niveau d'indirection.
J'ai ajouté une classe appelée JObjectWrapper
qui n'est pas IEnumerable
et j'enveloppe mon JObject
avec. Maintenant, mon IDestructuringPolicy
est appelé et le monde est à nouveau un endroit heureux.
@kkozmic comment se passe celui-ci ? Vaut-il la peine de supprimer la limitation que vous mentionnez ci-dessus ? D'autres réflexions ? À votre santé :)
eh bien, c'est une solution de contournement désagréable :) Cela m'amène là où je dois être, mais je préférerais avoir une solution plus élégante que cela si possible.
Nouvelle interface, peut-être ?
public interface ISequenceConversionPolicy
{
bool TryConvertToSequence(object value, ILogEventPropertyValueFactory propertyValueFactory, out SequenceValue result);
}
Aussi, peut-être :
public interface IDictionaryConversionPolicy
:)
Fermeture pour le moment, mais ouvert à travailler sur celui-ci si quelqu'un souhaite essayer un PR. Merci pour tous les gens d'entrée! :)
@kkozmic Est-ce que je pourrais jeter un œil à votre IDestructuringPolicy
(celui qui fonctionne avec le wrapper) ?
Désolé, je n'ai plus ce code avec moi.
Le mar 03 février 2015 à 4:38:45 AM Harry McIntyre [email protected]
a écrit:
@kkozmic https://github.com/kkozmic Toute chance que je pourrais jeter un oeil à
votre IDestructuringPolicy (celle qui fonctionne avec le wrapper) ?-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.
La version 1.4.168 supprime la limitation qui rendait cela gênant ; j'adorerais voir un _Serilog.Extras.JObject_ ou similaire qui en profite :-)
Merci @Jaben d' avoir
Joli!
@nblumhardt c'est génial, merci !
Commentaire le plus utile
https://github.com/destructurama/json-net