En Twitter mencionaste que debería ser bastante sencillo de implementar a través de IDestructuringPolicy
;)
Estaba tratando de que esto funcionara a través de IDestructuringPolicy
pero me temo que no funcionará.
Una mirada rápida a través del código base parece indicar (aquí https://github.com/serilog/serilog/blob/master/src/Serilog/Parameters/PropertyValueConverter.cs?source=c#L112) que PropertyValueConverter
primero trata los objetos como una colección (todos los JToken
s son IEnumerable
) y por lo tanto nunca se molesta en verificar con IDestructuringPolicy
.
Creo que quizás darle al IDestructuringPolicy
una prioridad más alta (verificándolo primero y luego volviendo al comportamiento predeterminado) podría ofrecer una salida, pero puedo estar completamente equivocado, solo pasé 2 minutos mirando esto código.
Creé una solución rápida por ahora ... agregando un nivel de indirección.
Agregué una clase llamada JObjectWrapper
que no es IEnumerable
y envuelvo mi JObject
con ella. Ahora llaman a mi IDestructuringPolicy
y el mundo vuelve a ser un lugar feliz.
@kkozmic, ¿cómo está resultando este? ¿Vale la pena que eliminemos la limitación que mencionaste anteriormente? ¿Algún otro pensamiento? Salud :)
bueno, es una solución desagradable :) Me lleva a donde necesito estar, pero prefiero tener una solución más elegante que esa si es posible.
¿Nueva interfaz, quizás?
public interface ISequenceConversionPolicy
{
bool TryConvertToSequence(object value, ILogEventPropertyValueFactory propertyValueFactory, out SequenceValue result);
}
Además, tal vez:
public interface IDictionaryConversionPolicy
:)
Cerrando por ahora, pero abierto a trabajar en este si alguien está interesado en probar un PR. ¡Gracias por toda la gente de entrada! :)
@kkozmic ¿ Alguna posibilidad de que pueda echar un vistazo a tu IDestructuringPolicy
(el que funciona con el contenedor)?
Lo siento, ya no tengo ese código conmigo.
El martes, 3 de febrero de 2015 a las 4:38:45 a. M., Harry McIntyre [email protected]
escribió:
@kkozmic https://github.com/kkozmic Cualquier oportunidad que pueda echar un vistazo
su IDestructuringPolicy (la que funciona con el contenedor)?-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/serilog/serilog/issues/30#issuecomment -72500600.
La compilación 1.4.168 elimina la limitación que hizo esto incómodo; Me encantaría ver un _Serilog.Extras.JObject_ o similar que lo aproveche :-)
¡Gracias @Jaben por clavar esto!
¡Bonito!
@nblumhardt eso es increíble, ¡gracias!
Comentario más útil
https://github.com/destructurama/json-net