Есть ли способ уменьшить многословность использования String.Format(...., p1, p2, p3)?
Я часто использую String.Format()
потому что это делает построение строк более читабельным и управляемым.
Есть ли способ уменьшить его синтаксическое многословие, например, с помощью метода расширения и т. Д.?
Logger.LogEntry(String.Format("text '{0}' registered", pair.IdCode));
public static void LogEntry(string message)
{
...
}
например, я хотел бы использовать все мои и другие методы, которые получают строку, как я использую Console.Write()
Например:
Logger.LogEntry("text '{0}' registered", pair.IdCode);
5 ответов
Как насчет:
static void LogEntry(string format, params object[] args) {
Console.WriteLine(format, args); // For example.
}
Теперь вы можете назвать это так:
Logger.LogEntry("text '{0}' registered", pair.IdCode);
Если вы контролируете Logger.LogEntry
метод, вы можете просто добавить перегрузку, которая включает в себя string.format. Просто объявите второй параметр как paramarray, и все готово!
Да, вы можете создать метод расширения с именем FormatWith, который позволяет вам говорить что-то вроде:
Logger.LogEntry("I hate my {0}".FormatWith(itemName));
Это должно быть достаточно легко, чтобы накатить свой собственный, но вот пример: http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx
Если Logger.LogEntry
статический метод вне вашего контроля, то нет; Вы можете добавлять только методы расширения к экземплярам. Если это ваш тип, вы можете добавить:
public static void LogEntry(string format, params object[] args) {
... string.Format(format,args) ...
}
Вы можете использовать ключевое слово params, чтобы объединить все аргументы после первого аргумента в массив и передать этот массив в String.Format.
static void FormatString(string myString, params string[] format)
{
Console.WriteLine(String.Format(myString, format));
}