Я создаю приложение ASP.NET MVC4 C#, которое принимает динамические запросы и динамически генерирует виды бритвы.Как преобразовать динамическое нулевое логическое значение в значение false
Приложение использует WebMatrix.Data.Query() для получения данных. Этот метод возвращает IEnumerable<dynamic>
. Строки результата могут содержать bool? Тип свойства whise значение null.
Эти значения используются в динамически создаваемых изображениях бритвы с & &, || а также ! операторы. Эти операторы не принимают нулевые булевские значения, в этом случае возникает исключение времени выполнения.
Я ищу способ исправить это. Кажется, что лучший способ - преобразовать динамические логические значения null в значение false.
Я попробовал метод
public static dynamic BooleanNullToFalse(dynamic value)
{
if (value == null && value is bool?)
return false;
return value;
}
но получил странную ошибку компиляции
Один или несколько типов, необходимых для компиляции динамического выражения не может быть найдено. Вам не хватает ссылки?
в выражении value == null
Как это исправить, так что код компилируется?
Другой возможностью было бы заставить &&
, ||
и !
логические операторы принимать нулевые значения или определить новые логические операторы, которые принимают нулевые значения. Я не знаю, это возможно/разумно?
Возможно, я плотный, но есть ли причина, по которой ваш метод принимает динамический параметр, а не Nullable? - похоже, это название говорит о том, что он действует только на Bool? Преобразование ранее, вероятно, значительно повлияет на решение вашей проблемы. –
Имеет ли ваш проект ссылку на Microsoft.CSharp.dll? – CharlesNRice
Если 'value' является' object'/'dynamic', который может поступать только из' bool? ',' Value is bool? 'Является таким же, как' value! = Null' из-за того, как работает бокс. Ваш оператор 'if' никогда не будет оценивать true (как описано). –