Кодовые контракты используются для утверждения вещей, которые всегда будут верными, и если они не верны, то в коде есть ошибка. Это означает, что он может применяться только к условиям, которые контролируются кодом. Таким образом, вы не можете использовать их для указания «пользователь никогда не предоставит пустую строку», потому что это находится вне контроля кода. Статический верификатор никогда не сможет доказать это утверждение - как он может знать, что будет делать пользователь?
Что вы можете сделать, это сделать операторы типа «При вводе данных пользователем метод либо возвратит непустую строку, либо выдаст исключение».