Я сохраняю некоторые логические значения в виде строковых переменных сеанса, например:
HttpContext.Session.SetString("SomeBool", user.SomeBool.ToString().ToLower());
Это дает мне предупреждения о том, что результат может варьироваться в зависимости от культуры пользователей. Как это возможно? Каким образом результат ToString()
или ToLower()
«Верно» или «Ложь» может различаться в зависимости от культуры? Разве логические значения не всегда представлены английскими словами «True» и «False», независимо от языка и региональных параметров базы данных или среды размещения?
Я также пробовал эти три, и все они дают одно и то же предупреждение:
HttpContext.Session.SetString("SomeBool", FormattableString.Invariant($"{user.SomeBool.ToString().ToLower()}"));
HttpContext.Session.SetString("SomeBool", String.Format(CultureInfo.CurrentCulture, $"{0}", user.SomeBool.ToString().ToLower()));
HttpContext.Session.SetString("SomeBool", String.Format(CultureInfo.CurrentCulture, user.SomeBool.ToString().ToLower()));
VS предлагает отключить предупреждения CA1305, но я не хочу этого делать.
Какие-либо предложения?
Обновить
Хотя ответ VillageTech отвечает на мой вопрос, я изменил свой код, чтобы полностью избежать этой проблемы. Вдохновленный предложением Кристофера о жестком кодировании значений:
HttpContext.Session.SetString("SomeBool", user.SomeBool ? "true" : "false");