Contract Класс

Определение

Содержит статические методы для представления контрактов программы, таких как предварительные условия, посткондиции и инвариантные объекты.

public ref class Contract abstract sealed
public static class Contract
type Contract = class
Public Class Contract
Наследование
Contract

Комментарии

Классы контрактов кода позволяют указывать предварительные условия, посткондиции и инвариантные объекты в коде. Предварительные условия — это требования, которые должны быть выполнены при вводе метода или свойства. Постусловия описывают ожидания в момент завершения кода метода или свойства. Инварианты объектов описывают ожидаемое состояние для класса, не имеющего проблем с состоянием. Дополнительные сведения о предварительных условиях, посткондициях и инвариантных объектах см. в разделе "Контракты кода".

Средства и подробные инструкции по использованию контрактов кода см. в разделе Code Contracts в Marketplace Visual Studio.

Important

Для вставки принудительного применения контрактов необходимо использовать двоичный перезапись. В противном случае контракты, такие как Contract.Ensures метод, могут быть проверены статически и не будут вызывать исключения во время выполнения, если контракт нарушается. Вы можете скачать двоичный средство перезаписи CCRewrite из Code Contracts на Visual Studio Marketplace. CCRewrite поставляется с надстройкой Visual Studio, которая позволяет активировать принудительное применение контракта во время выполнения из страницы проекта Properties. Двоичный перезаписатель и надстройка Visual Studio не поставляются с Visual Studio 2010 или пакетом SDK Windows.

Методы

Имя Описание
Assert(Boolean, String)

Проверка условия; Значение , если условие равно false, следует политике эскалации, заданной анализатором, и отображает указанное сообщение.

Assert(Boolean)

Проверка условия; Значение , если условие равно false, следует политике эскалации, заданной для анализатора.

Assume(Boolean, String)

Указывает средствам анализа кода предположить, что условие trueимеет значение , даже если оно не может быть статически доказано всегда и trueотображает сообщение, если предположение завершается ошибкой.

Assume(Boolean)

Указывает средствам анализа кода предположить, что указанное условие имеет trueзначение, даже если оно не может быть статически доказано всегда true.

EndContractBlock()

Помечает конец раздела контракта, если контракты метода содержат только предварительные условия в if-then-throw форме.

Ensures(Boolean, String)

Указывает контракт postcondition для предоставленного условия выхода и сообщение для отображения, если условие равно false.

Ensures(Boolean)

Указывает контракт postcondition для заключающего метода или свойства.

EnsuresOnThrow<TException>(Boolean, String)

Указывает контракт postcondition и сообщение для отображения, если условие предназначено false для заключенного метода или свойства на основе предоставленного исключения и условия.

EnsuresOnThrow<TException>(Boolean)

Указывает контракт postcondition для заключающего метода или свойства на основе предоставленного исключения и условия.

Exists(Int32, Int32, Predicate<Int32>)

Определяет, является ли указанный тест истинным для любого целого числа в диапазоне целых чисел.

Exists<T>(IEnumerable<T>, Predicate<T>)

Определяет, существует ли элемент в коллекции элементов в функции.

ForAll(Int32, Int32, Predicate<Int32>)

Определяет, является ли определенное условие допустимым для всех целых чисел в указанном диапазоне.

ForAll<T>(IEnumerable<T>, Predicate<T>)

Определяет, существуют ли все элементы коллекции в функции.

Invariant(Boolean, String)

Указывает инвариантный контракт для заключающего метода или свойства и отображает сообщение, если условие контракта завершается ошибкой.

Invariant(Boolean)

Указывает инвариантный контракт для заключающего метода или свойства.

OldValue<T>(T)

Представляет значения, как они были в начале метода или свойства.

Requires(Boolean, String)

Указывает предварительный контракт для заключенного метода или свойства и отображает сообщение, если условие контракта завершается сбоем.

Requires(Boolean)

Указывает предварительный контракт для заключенного метода или свойства.

Requires<TException>(Boolean, String)

Указывает контракт предварительного условия для заключенного метода или свойства и создает исключение с предоставленным сообщением, если условие контракта завершается ошибкой.

Requires<TException>(Boolean)

Указывает контракт предварительного условия для заключенного метода или свойства и вызывает исключение, если условие контракта завершается ошибкой.

Result<T>()

Представляет возвращаемое значение метода или свойства.

ValueAtReturn<T>(T)

Представляет окончательное (выходное) значение out параметра при возврате из метода.

События

Имя Описание
ContractFailed

Происходит при сбое контракта.

Применяется к