Я установил свойство bool, чтобы предотвратить или разрешить команду для запуска на основе того, что для этого bool установлено значение true.Как разрешить исключение InvalidOperationException при условии Bool?
В текущей реализации я проверяю внутри bool, что определенные значения не равны нулю, прежде чем установить bool в значение true.
Вопрос:
Почему я получаю InvalidOperationException о состоянии внутри BOOL?
Обзор коды:
Bool свойство CanSendCommand
, который используется в качестве паров в команде реле ниже:
private bool CanSendCommand()
{
if (SelectedParkDuration.Value != null && RegNumber != string.Empty && SelectedZone.ZoneName != null)
{
return true;
}
return false;
}
TagRequestCommand
который вызывается первоначально в методе нагрузки на класс initilization. Сама команда связана с нажатием кнопки на пользовательском интерфейсе.
Для контекста RegNumber является тип строки, SelectedParkingDuration является TimeSpan, и SelectedZone.ZoneName является строкой в собственности:
private void LoadCommands()
{
TagRequestCommand = new RelayCommand(async() =>
{
await SendParkingTagSMSRequest();
} ,CanSendCommand);
}
Я скопировал сведения об исключении, которое говорит мне значения для условия являются нулевыми, что должно быть хорошо, поскольку оно обрабатывается в состоянии bool. Я вижу тогда, что есть строка, указывающая на то, что «Объект Nullable должен иметь значение», который говорит мне, что, возможно, свойство Timespan SelectedParkDuration должно иметь значение. Но я не уверен, как он может иметь значение до того, как значение будет выбрано.
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=Nullable object must have a value.
Source=mscorlib
StackTrace:
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Nullable`1.get_Value()
at Parking_Tag_Picker_WRT.ViewModel.TagRequestViewModel.CanSendCommand()
InnerException:
Скриншот из автоманьяка окна во время выполнения: