Estamos usando IoC y tenemos nuestro registro expuesto con él. Estamos utilizando Common.Logging
y he escrito un delegado correspondiente para Common.Logging.FormatMessageHandler
, pero no sé cómo convertir de nuestra versión de ese delegado al que espera la API Common.Logging
.Convierta de un delegado a otro. Pseudo-molde
Esta pregunta parece ser similar pero no entiendo cómo convertir de mi tipo implementado al tipo conocido que deseo llamar. Dynamically casting one type of delegate to another
Aquí es mi delegado de la firma:
public delegate string FormatMessageHandler(string format, params object[] args)
Aquí es Common.Logging de:
public delegate string FormatMessageHandler(string format, params object[] args)
mismo nombre (no es materia) y el mismo número de parámetros. Ambos son conocidos en tiempo de compilación, por lo que debería ser algo obvio, pero no lo estoy viendo.
Su explicar es grande y funciona hasta que intento utilizar la acción. ¿Cómo puedo hacerlo con Action? Mi método de firma: pública error nula (Acción formatMessageCallback) Y el último método para llamar es: vacío Common.Logging.Error (Acción formatMessageCallback); –
No expongo el delegado Common.Logging ni ninguna de las API en caso de que decidamos usar un marco de registro diferente en el futuro. Si eso sucede, entonces "todo" lo que tenemos que hacer es escribir algún código que implemente la interfaz de registro que definimos antes y envolver las llamadas al nuevo marco de registro. –
@David: La razón para no usar el delegado del registrador es válida, gracias por explicarnos. Por favor, mira la actualización para encontrar una solución a tu primer comentario. –