Есть ли способ уменьшить многообразность использования string.format (..., p1, p2, p3)?
-
03-10-2019 - |
Вопрос
Я часто использую 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);
Решение
Как насчет:
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. Просто объявляйте второй параметр как парамирай, и вы хороши, чтобы пойти!
Да, вы можете сделать метод расширения с именем 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) ...
}
Вы можете использовать ключевое слово «Парам», чтобы объединить все аргументы после первого аргумента в массив и пройти этот массив в String.Format.
static void FormatString(string myString, params string[] format)
{
Console.WriteLine(String.Format(myString, format));
}