No Twitter, você mencionou que deve ser bastante simples de implementar via IDestructuringPolicy
;)
Eu estava tentando fazer isso funcionar por meio de IDestructuringPolicy
, mas temo que não funcione.
Uma olhada superficial na base de código parece indicar (aqui https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112) que PropertyValueConverter
primeiro trata os objetos como uma coleção (todos os JToken
s são IEnumerable
) e, portanto, nunca se preocupa em verificar com IDestructuringPolicy
.
_Penso_ que talvez dar a IDestructuringPolicy
uma prioridade mais alta (verificar primeiro e depois voltar ao comportamento padrão) pode oferecer uma saída, mas posso estar completamente errado, só passei 2 minutos olhando para isso código.
Eu criei uma solução alternativa rápida por agora ... adicionando um nível de indireção.
Eu adicionei uma classe chamada JObjectWrapper
que não é IEnumerable
e envolvo meu JObject
com ela. Agora meu IDestructuringPolicy
é pago e o mundo é um lugar feliz novamente.
@kkozmic, como está
bem, é uma solução desagradável :) Isso me leva onde preciso estar, mas prefiro ter uma solução mais elegante do que isso, se possível.
Nova interface, talvez?
public interface ISequenceConversionPolicy
{
bool TryConvertToSequence(object value, ILogEventPropertyValueFactory propertyValueFactory, out SequenceValue result);
}
Além disso, talvez:
public interface IDictionaryConversionPolicy
:)
Fechando por enquanto, mas aberto para trabalhar com este aqui se alguém quiser tentar um PR. Obrigado por todas as contribuições pessoal! :)
@kkozmic Alguma chance de eu dar uma olhada em seu IDestructuringPolicy
(aquele que funciona com o invólucro)?
Desculpe, não tenho mais esse código comigo.
Na terça-feira, 03 de fevereiro de 2015 às 4:38:45, Harry McIntyre [email protected]
escreveu:
@kkozmic https://github.com/kkozmic Posso dar uma olhada em
sua IDestructuringPolicy (aquela que funciona com o wrapper)?-
Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.
A versão 1.4.168 remove a limitação que tornava isso estranho; adoraria ver um _Serilog.Extras.JObject_ ou similar que tire vantagem disso :-)
Obrigado @Jaben por
Agradável!
@nblumhardt isso é incrível, obrigado!
Comentários muito úteis
https://github.com/destructurama/json-net