Contract.Invariant Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje kontrakt pro uzavřenou metodu nebo vlastnost.
Přetížení
| Name | Description |
|---|---|
| Invariant(Boolean) |
Určuje invariantní kontrakt pro uzavřenou metodu nebo vlastnost. |
| Invariant(Boolean, String) |
Určuje invariantní kontrakt pro uzavřenou metodu nebo vlastnost a zobrazí zprávu, pokud podmínka kontraktu selže. |
Invariant(Boolean)
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
Určuje invariantní kontrakt pro uzavřenou metodu nebo vlastnost.
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)
Parametry
- condition
- Boolean
Podmíněný výraz, který se má testovat.
- Atributy
Poznámky
Invariant kontrakty jsou obsaženy v metodě, která je identifikována atributem ContractInvariantMethodAttribute ; obvykle je metoda pojmenována ObjectInvariant.
Tento kontrakt lze zadat pouze ve vyhrazené invariantní metodě, která je deklarována ve třídě. Pokud metoda není zapečetěná, měla by odkazovat pouze na chráněné členy, nikoli soukromé členy, aby podtřídy mohly být jisti zachování invariantů.
Tato smlouva není vystavena klientům; proto může odkazovat na členy, které jsou méně viditelné než uzavírací metoda.
Pro vynucení této invariantní běhu je nutné použít binární rewriter.
Invarianty jsou podmíněně definovány na základě přítomnosti symbolu
CONTRACTS FULL. Během kontroly za běhu se invarianty kontrolují na konci každé veřejné metody. Pokud invariant zmíní veřejnou metodu ve stejné třídě, invariantní kontrola, která by se normálně stala na konci této veřejné metody, je zakázána a kontrolována pouze na konci vnější metody volání této třídy. K tomu dochází také v případě, že je třída znovu zadána kvůli volání metody v jiné třídě.
Platí pro
Invariant(Boolean, String)
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
- Zdroj:
- Contracts.cs
Určuje invariantní kontrakt pro uzavřenou metodu nebo vlastnost a zobrazí zprávu, pokud podmínka kontraktu selže.
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)
Parametry
- condition
- Boolean
Podmíněný výraz, který se má testovat.
- userMessage
- String
Zpráva, která se má zobrazit, pokud je falsepodmínka .
- Atributy
Poznámky
Invariant kontrakty jsou obsaženy v metodě, která je identifikována atributem ContractInvariantMethodAttribute ; obvykle je metoda pojmenována ObjectInvariant.
Tento kontrakt lze zadat pouze ve vyhrazené invariantní metodě, která je deklarována ve třídě.
Tato smlouva není vystavena klientům; proto může odkazovat na členy, které jsou méně viditelné než uzavírací metoda.
Pro vynucení této invariantní běhu je nutné použít binární rewriter.
Invarianty jsou podmíněně definovány na symbolu
CONTRACTS FULL. Během kontroly za běhu se invarianty kontrolují na konci každé veřejné metody. Pokud invariant zmíní veřejnou metodu ve stejné třídě, invariantní kontrola, která by se normálně stala na konci této veřejné metody, je zakázána a kontrolována pouze na konci vnější metody volání této třídy. K tomu dochází také v případě, že je třída znovu zadána kvůli volání metody v jiné třídě.