Мне нравится, как String.Format использует аргументы для вставки переменных в строку, которую он форматирует. Это называется Composite Formating и обсуждается в MSDN здесь.
Я хочу эту функциональность с моим фасадом ведения журнала:
string foo = "fancy";
string bar = "message";
log.Debug("My {0} log {1}.", foo, bar)
My ILoggerFacade имеет следующую подпись метода:
void Debug<T>(T message, params Object[] args);
И я знаю, что могу реализовать это довольно просто:
ILog m_Log = \\some logging implementation
public void Debug<T>(T message, params Object[] args)
{
m_Log.Debug(String.Format(message, args));
}
Однако в Visual Studio я не получаю причудливого выделения аргументов {0}, {1},...:
Я думаю, что ReSharper является для них нереализованным, и похоже, что он просто игнорирует аргументы форматирования и не дает никакой помощи "intellisense". Это плохо, так как другие разработчики, которые будут использовать фасад, будут ожидать этого.
Как получить подсветку аргументов и "intellisense" для пользовательских форматированных методов, аналогичных тем, как они работают:
Console.WriteLine(...)
String.Format(...)
etc...
Любая помощь будет оценена.