Contract.Invariant Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает контракт для включающего метода или свойства.
Перегрузки
Invariant(Boolean) |
Задает инвариантный контракт ля включающего метода или свойства. |
Invariant(Boolean, String) |
Указывает инвариантный контракт для включающего метода или свойства и отображает сообщение, если условие для контракта не выполняется. |
Invariant(Boolean)
- Исходный код:
- Contracts.cs
- Исходный код:
- Contracts.cs
- Исходный код:
- Contracts.cs
Задает инвариантный контракт ля включающего метода или свойства.
public:
static void Invariant(bool condition);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition);
[<System.Diagnostics.Conditional("CONTRACTS_FULL")>]
static member Invariant : bool -> unit
Public Shared Sub Invariant (condition As Boolean)
Параметры
- condition
- Boolean
Условное выражение, которое требуется подвергнуть проверке.
- Атрибуты
Комментарии
Invariant контракты содержатся в методе, который идентифицируется атрибутом ContractInvariantMethodAttribute ; как правило, метод называется ObjectInvariant
.
Этот контракт можно указать только в выделенном инвариантном методе, объявленном в классе . Если метод не запечатан, он должен ссылаться только на защищенные члены, а не на закрытые члены, чтобы подклассы могли поддерживать инварианты.
Этот контракт не предоставляется клиентам; Таким образом, он может ссылаться на элементы, которые менее видимы, чем включающий метод.
Для принудительного применения этого инварианта во время выполнения необходимо использовать двоичный перезапись.
Инварианты определяются условно на основе наличия символа
CONTRACTS FULL
. При проверке во время выполнения инварианты проверяются в конце каждого открытого метода. Если инвариант упоминает открытый метод в том же классе, то инвариантный проверка, который обычно происходит в конце этого открытого метода, отключается и проверяется только в конце вызова самого внешнего метода этого класса. Это также происходит, если класс повторно вводится в результате вызова метода в другом классе.
Применяется к
Invariant(Boolean, String)
- Исходный код:
- Contracts.cs
- Исходный код:
- Contracts.cs
- Исходный код:
- Contracts.cs
Указывает инвариантный контракт для включающего метода или свойства и отображает сообщение, если условие для контракта не выполняется.
public:
static void Invariant(bool condition, System::String ^ userMessage);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition, string userMessage);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition, string? userMessage);
[<System.Diagnostics.Conditional("CONTRACTS_FULL")>]
static member Invariant : bool * string -> unit
Public Shared Sub Invariant (condition As Boolean, userMessage As String)
Параметры
- condition
- Boolean
Условное выражение, которое требуется подвергнуть проверке.
- userMessage
- String
Отображаемое сообщение при условии false
.
- Атрибуты
Комментарии
Invariant контракты содержатся в методе, который идентифицируется атрибутом ContractInvariantMethodAttribute ; как правило, метод называется ObjectInvariant
.
Этот контракт можно указать только в выделенном инвариантном методе, объявленном в классе .
Этот контракт не предоставляется клиентам; Таким образом, он может ссылаться на элементы, которые менее видимы, чем включающий метод.
Для принудительного применения этого инварианта во время выполнения необходимо использовать двоичный перезапись.
Инварианты определяются условно для символа
CONTRACTS FULL
. При проверке во время выполнения инварианты проверяются в конце каждого открытого метода. Если инвариант упоминает открытый метод в том же классе, то инвариантный проверка, который обычно происходит в конце этого открытого метода, отключается и проверяется только в конце вызова самого внешнего метода этого класса. Это также происходит, если класс повторно вводится в результате вызова метода в другом классе.