¿Cómo hago mi propio método similar a String.Format usando el formato compuesto en C #?

Me gusta cómo String.Format usa argumentos para inyectar variables en la cadena que está formateando. Esto se llama Formateo Compuesto y es discutido por MSDNaquí.

Quiero esta funcionalidad con mi fachada de registro:

string foo = "fancy";
string bar = "message";
log.Debug("My {0} log {1}.", foo, bar)

Mi ILoggerFacade tiene la siguiente firma de método:

void Debug<T>(T message, params Object[] args);

Y, sé que puedo implementar esto de manera muy simple:

ILog m_Log = \\some logging implementation
public void Debug<T>(T message, params Object[] args)
{
    m_Log.Debug(String.Format(message, args));
}

Sin embargo, en Visual Studio no obtengo el resaltado de fantasía de los argumentos {0}, {1}, ...:

Supongo que es ReSharper quien es responsable de ellos, y parece que simplemente está ignorando los argumentos de formateo y no da ayuda "intellisense". Esto no es bueno ya que los otros desarrolladores que usarán la fachada estarán esperando esto.

¿Cómo obtengo el resaltado de argumentos y "intellisense" para métodos con formato personalizados similares a cómo funcionan estos:

Console.WriteLine(...)
String.Format(...)
etc...

Cualquier ayuda sería apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta