Код: Выделить всё
public class BaseMessage
{
public string Message;
...
}
Код: Выделить всё
public class ProcessMessage : BaseMessage
{
...
}
< /code>
В целом этот класс создан в 500 различных местах по всему проекту. Иногда строка интерполируется: < /p>
var ret = new ProcessMessage() { Message = $"Some information {someParam}" };
< /code>
Иногда это не так: < /p>
var ret = new ProcessMessage() { Message = "Some information" };
< /code>
Иногда она передается как строковая переменная, например,: < /p>
var ret = new ProcessMessage() { Message = someMessage };
Я только что узнал, что вы можете использовать Formattablesting для него. />
Код: Выделить всё
public class ProcessMessage : BaseMessage
{
public new FormattableString Message;
...
}
Код: Выделить всё
public class SpecialString
{
public string StringValue { get; private set; }
public FormattableString FormattableValue { get; private set; }
public static implicit operator SpecialString(string value)
{
return new SpecialString { StringValue = value };
}
public static implicit operator SpecialString(FormattableString value)
{
return new SpecialString { FormattableValue = value };
}
public override string ToString()
{
return FormattableValue?.ToString() ?? StringValue ?? string.Empty;
}
}
< /code>
Но этот подход не сработал. C# всегда выбирает обычную строку.
Я думал, что, возможно, вы могли бы создать класс, который будет вытекать из FormattableString Подробнее здесь: https://stackoverflow.com/questions/794 ... tring-in-c