У меня есть следующий метод:
private void DoSomething(CoolClass coolClass)
{
if (coolClass == null)
{
throw new ArgumentNullException("coolClass");
}
coolClass.Name = "Pepe";
}
С кодовыми контрактами мы можем написать это следующим образом:
private void DoSomething(CoolClass coolClass)
{
Contract.Requires<ArgumentNullException>(coolClass != null, "IS NULLL!");
coolClass.Name = "Pepe";
}
Второй метод короче и проще. Проблема в том, что когда вы ее создаете, во время выполнения она не генерирует исключение, она показывает это:
Описание: сборка (возможно, "CodeContractsTest" ) должна быть перезаписана с использованием двоичного перезаписывающего кода кода (CCRewrite), поскольку он вызывает Contract.Requires и символ CONTRACTS_FULL. Удалите все явные определения символа CONTRACTS_FULL из вашего проекта и перестройте. CCRewrite можно загрузить из http://go.microsoft.com/fwlink/?LinkID=169180. После установки перезаписывающего устройства его можно включить в Visual Studio на странице "Свойства проекта" на панели "Контракты кода". Убедитесь, что включена опция "Выполнять проверку выполнения времени выполнения", которая будет определять CONTRACTS_FULL.
Если с VS вы не загрузите CodeContracts для .net из здесь.
И затем вы проверяете "Проверка времени выполнения" в проекте, чтобы при его создании во время выполнения исключалось исключение.
Наше приложение построено с помощью Jenkins с помощью сценариев PowerShell. Есть ли способ проверить время выполнения и выбросить исключение с помощью простой команды или атрибута или что-то простое?