Пробую использовать это чудо в проекте:
Contract.Requires(gates != null);
Contract.Requires(Contract.ForAll(gates, gate => gate != null));
...
foreach (var gate in gates)
gate.PrepareForRecognize(operations);
Warning 23 contracts: Possibly calling a method on a null reference 'gate'
Кто-нибудь реально работал с ним, как его утихомирить? Сейчас просто отключил статическую проверку.
Здравствуйте, Flem1234, Вы писали:
F>Кто-нибудь реально работал с ним, как его утихомирить? Сейчас просто отключил статическую проверку.
Очевидно, gates — нестандартная коллекция и Static Analysis думает, что IEnumerator (который создаётся в foreach) может быть null. Выделили бы строчку на которую ругается — подсказал бы точнее.
1) Выключите implicit not-null obligations
2) Если у вас версия младше 1.4.30909.0 — обновитесь.
И да, до RTM-а я бы ограничился только статическим анализом. Нужные ассерты можно реализовать самостоятельно. Пометите ContractArgumentValidatorAttribute (читаем
юзердок [pdf]) — будут учитываться CC.