Como faço para o meu próprio método semelhante ao String.Format usando formatação composta em c #

Eu gosto de como String.Format usa argumentos para injetar variáveis ​​na seqüência que está formatando. Isso é chamado de formação de compostos e é discutido pelo MSDNAqui.

Eu quero essa funcionalidade com a minha fachada de log:

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

Meu ILoggerFacade tem a seguinte assinatura de método:

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

E sei que posso implementar isso de maneira simples:

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

No entanto, no Visual Studio, não obtenho o destaque dos argumentos {0}, {1}, ...:

Eu acho que é ReSharper quem é responsável por eles, e parece que é apenas ignorando os argumentos de formatação e não dando nenhuma ajuda "intellisense". Isso não é bom, já que os outros desenvolvedores que usarão a fachada estarão esperando por isso.

Como obtenho o realce de argumentos e o "intellisense" para métodos formatados personalizados semelhantes a como eles funcionam:

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

Qualquer ajuda seria apreciada.

questionAnswers(1)

yourAnswerToTheQuestion