Поделиться через


Contract Класс

Определение

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

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

Комментарии

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

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

Важно!

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

Методы

Assert(Boolean)

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

Assert(Boolean, String)

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

Assume(Boolean)

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

Assume(Boolean, String)

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

EndContractBlock()

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

Ensures(Boolean)

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

Ensures(Boolean, String)

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

EnsuresOnThrow<TException>(Boolean)

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

EnsuresOnThrow<TException>(Boolean, String)

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

Exists(Int32, Int32, Predicate<Int32>)

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

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

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

ForAll(Int32, Int32, Predicate<Int32>)

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

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

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

Invariant(Boolean)

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

Invariant(Boolean, String)

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

OldValue<T>(T)

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

Requires(Boolean)

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

Requires(Boolean, String)

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

Requires<TException>(Boolean)

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

Requires<TException>(Boolean, String)

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

Result<T>()

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

ValueAtReturn<T>(T)

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

События

ContractFailed

Происходит, когда контракт не выполняется.

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