Невозможно привести объект типа 'System.Int32' к типу 'System.Boolean'. ' - PullRequest
0 голосов
/ 24 апреля 2020

Когда я проверяю файл output.txt, я вижу, что компилятор не показывает опцию isEnable, которая должна быть bool Когда я запускаю отладчик, я вижу это сообщение

Unable to cast object of type 'System.Int32' to type 'System.Boolean'.'


korisnik.isEnabled = (bool)(result.Properties["userAccountControl"][0]);

Я пытаюсь что-то, но не работает на все!

 korisnik.isEnabled = (bool)(result.Properties["userAccountControl"][0].ToString());

Что не так?

1 Ответ

1 голос
/ 24 апреля 2020

Исключение говорит о том, что вы не можете использовать int как логическое значение. Вам необходимо определить, при каких условиях int должно быть ложным или истинным.

Например:

  • 0 должно быть ложным
  • все остальное должно быть истинным

или

  • 1 должно быть истинным
  • все остальное должно быть ложным

Вот пример для одного из этих случаев:

// when the value is > 0, it should be true.
if(result.Properties["userAccountControl"][0] > 0)
    korisnik.isEnabled = true;
else
    korisnik.isEnabled = false;

Выражение > 0 вернет логическое значение, поэтому вы можете сохранить его непосредственно в isEnabled

korisnik.isEnabled = result.Properties["userAccountControl"][0] > 0;

Если result.Properties["userAccountControl"][0] хранится как объект ( в штучной упаковке) , вам нужно сначала привести его к int.

var userAccountControlValue = (int)result.Properties["userAccountControl"][0];
korisnik.isEnabled = userAccountControlValue  > 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...