c# string-formatting optional-parameters c#-5.0

c# - Combinando CallerMemberName con params



string-formatting optional-parameters (2)

En este momento (C # 4.0) nuestro método de registro parece

public void Log(string methodName, string messageFormat, params object[] messageParameters)

donde el registrador realiza el formateo de la cadena, de modo que la persona que llama no ha puesto String.Format para crear un mensaje de registro agradable (y permite que el registrador omita el formateo de la cadena si no hay un visor de registros adjunto).

Con c # 5.0 me gustaría deshacerme del parámetro methodName usando el nuevo atributo CallerMemberName pero no veo cómo esto se puede combinar con la palabra clave ''params''. ¿Hay alguna forma de hacer esto?


Creo que simplemente no puede combinar params y parámetros opcionales, que son necesarios para CallerMemberName . Lo mejor que puedes hacer es usar una matriz real en lugar de params .


Podrías hacer algo como esto:

protected static object[] Args(params object[] args) { return args; } protected void Log(string message, object[] args = null, [CallerMemberName] string method = "") { // Log }

Para utilizar el registro haz esto:

Log("My formatted message a1 = {0}, a2 = {2}", Args(10, "Nice"));