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.