Напишите метод расширения для StringBuilder.AppendLine с определенным FormatProvider.C#

Место общения программистов C#
Ответить
Anonymous
 Напишите метод расширения для StringBuilder.AppendLine с определенным FormatProvider.

Сообщение Anonymous »

Напишите метод расширения поверх StringBuilder.AppendLine с определенным FormatProvider.
Чтобы избежать использования кода, который всегда явно передает FormatProvider :

Код: Выделить всё

StringBuilder sb = new ();
var invariant = CultureInfo.InvariantCulture;
sb.AppendLine(invariant, $"Now: {DateTime.UtcNow:yyyy.MM.dd HH:mm}");
Я решил написать метод расширения, чтобы иметь возможность изменить приведенный выше код на следующее представление:

Код: Выделить всё

StringBuilder sb = new ();
sb.AppendInvariantLine($"Now: {DateTime.UtcNow:yyyy.MM.dd HH:mm}");
но из-за непонимания внутренней реализации интерполированной строки мне не удалось это сделать.
Моей лучшей попыткой было:

Код: Выделить всё

public static StringBuilder AppendInvariantLine(
this StringBuilder stringBuilder,
ref StringBuilder.AppendInterpolatedStringHandler handler)
{
return stringBuilder.AppendLine(CultureInfo.InvariantCulture, ref handler);
}
но его даже нельзя вызвать, не говоря уже о корректности реализации.
Ошибка компилятора при этом вызове

Код: Выделить всё

sb.AppendInvariantLine($"Now: {DateTime.UtcNow:yyyy.MM.dd HH:mm}")
это:

CS1615: аргумент 3 нельзя передавать с ключевым словом out

Подробнее здесь: https://stackoverflow.com/questions/786 ... formatprov
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»