Metalama.Patterns.Contracts
2024.2.18
Prefix Reserved
See the version list below for details.
dotnet add package Metalama.Patterns.Contracts --version 2024.2.18
NuGet\Install-Package Metalama.Patterns.Contracts -Version 2024.2.18
<PackageReference Include="Metalama.Patterns.Contracts" Version="2024.2.18" />
paket add Metalama.Patterns.Contracts --version 2024.2.18
#r "nuget: Metalama.Patterns.Contracts, 2024.2.18"
// Install Metalama.Patterns.Contracts as a Cake Addin #addin nuget:?package=Metalama.Patterns.Contracts&version=2024.2.18 // Install Metalama.Patterns.Contracts as a Cake Tool #tool nuget:?package=Metalama.Patterns.Contracts&version=2024.2.18
About
The Metalama.Patterns.Contracts
package implements the concept of contract-based programming, encompassing preconditions, postconditions, and invariants.
Key Features
- Implementation of preconditions and postconditions through a wide range of numeric or string-based contracts.
- Verification of invariants.
Main Types
Below is a list of available contract attributes for your selection:
Nullability Contracts
[NotNull]
verifies that the assigned value is notnull
.[Required]
contract verifies that the value is notnull
and requires the string to be non-empty.
String Contracts
[NotEmpty]
requires the string to be non-empty. Note that this contract does not validate the string against being null. If you want to prohibit both null and empty strings, use[Required]
.[CreditCard]
validates that the string is a valid credit card number.[Email]
,[Phone]
, and[Url]
validate strings against well-known regular expressions.[Regex]
validates a string against a custom regular expression.[StringLength]
validates that the length of a string falls within a specified range.
Enum Contracts
[EnumDataType]
contract can validate values of typestring
,object
, or of any integer type. It throws an exception if the value is not valid for the givenenum
type.
Numeric Contracts
The following contracts can be used to verify that a value falls within a specified range:
[LessThan]
verifies that the value is less than or equal to the specified maximum.[GreaterThan]
verifies that the value is greater than or equal to the specified minimum.[Negative]
verifies that the value is less than or equal to zero.[Positive]
verifies that the value is greater than or equal to zero.[Range]
verifies that the value is greater than or equal to a specified minimum and less than or equal to a specified maximum.[StrictlyLessThan]
verifies that the value is strictly less than the specified maximum.[StrictlyGreaterThan]
verifies that the value is strictly greater than the specified minimum.[StrictlyNegative]
verifies that the value is strictly less than zero.[StrictlyPositive]
verifies that the value is strictly greater than zero.[StrictRange]
verifies that the value is strictly greater than a specified minimum and strictly less than a specified maximum.
Collections Contracts
[NotEmpty]
contract can be used on any collection, including arrays or immutable arrays. It requires the collection or the array to contain at least one element.
Invariants
[Invariant]
causes the target method (a parameterlessvoid
method) to be invoked after each public method or property setter.[DoNotCheckInvariants]
exempts the target method from enforcing invariants, but does not exempt any method or property setter used by this method.[SuspendInvariant]
exempts the target method from enforcing invariants, including any method or property setter used by this method.
Additional Documentation
- Conceptual documentation:
- Preconditions and postconditions: https://doc.postsharp.net/metalama/patterns/contracts/adding-contracts
- Invariants: https://doc.postsharp.net/metalama/patterns/contracts/invariants
- API documentation: https://doc.postsharp.net/metalama/api/metalama-patterns-contracts
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 is compatible. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.1
- Metalama.Framework (>= 2024.2.18)
-
.NETStandard 2.0
- Metalama.Framework (>= 2024.2.18)
-
net6.0
- Metalama.Framework (>= 2024.2.18)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Metalama.Patterns.Contracts:
Package | Downloads |
---|---|
Shinya.Core
Shinya.Framework |
|
Metalama.Patterns.Caching.Aspects
A set of aspects that simplify the caching: [Cache] to cache a method result as a function of its parameters, [InvalidateCache] to invalidate the cache, or [CacheKey] to mark a cache key in a class. |
|
Atesh.Metalama
Atesh.Metalama library is a collection of custom made Metalama Aspects (a.k.a Attributes). |
|
JamesConsulting
Package Description |
|
Metalama.Patterns.Xaml
Provides custom |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2025.0.6-rc | 143 | 11/15/2024 |
2025.0.5-preview | 119 | 11/8/2024 |
2025.0.4-preview | 86 | 10/31/2024 |
2025.0.3-preview | 101 | 10/25/2024 |
2025.0.2-preview | 95 | 10/24/2024 |
2025.0.1-preview | 91 | 10/14/2024 |
2024.2.30 | 110 | 11/15/2024 |
2024.2.29 | 168 | 10/31/2024 |
2024.2.28 | 122 | 10/25/2024 |
2024.2.27 | 105 | 10/24/2024 |
2024.2.26 | 207 | 10/14/2024 |
2024.2.25 | 173 | 10/2/2024 |
2024.2.24 | 3,904 | 9/10/2024 |
2024.2.23 | 661 | 8/30/2024 |
2024.2.22 | 187 | 8/29/2024 |
2024.2.21 | 315 | 8/28/2024 |
2024.2.20 | 1,027 | 8/15/2024 |
2024.2.19 | 759 | 8/1/2024 |
2024.2.18 | 188 | 7/29/2024 |
2024.2.17-rc | 133 | 7/22/2024 |
2024.2.16-rc | 123 | 7/18/2024 |
2024.2.15-rc | 168 | 7/12/2024 |
2024.2.14-rc | 198 | 7/8/2024 |
2024.2.13-rc | 132 | 7/2/2024 |
2024.2.12-preview | 188 | 6/28/2024 |
2024.2.11-preview | 132 | 6/26/2024 |
2024.2.10-preview | 129 | 6/20/2024 |
2024.2.9-preview | 166 | 6/11/2024 |
2024.2.8-preview | 102 | 6/6/2024 |
2024.2.7-preview | 129 | 5/30/2024 |
2024.2.6-preview | 127 | 5/25/2024 |
2024.2.5-preview | 147 | 5/6/2024 |
2024.2.4-preview | 134 | 5/4/2024 |
2024.2.3-preview | 133 | 4/30/2024 |
2024.2.2-preview | 132 | 4/23/2024 |
2024.2.1-preview | 134 | 4/11/2024 |
2024.1.30 | 99 | 10/24/2024 |
2024.1.29 | 115 | 10/11/2024 |
2024.1.28 | 142 | 9/9/2024 |
2024.1.27 | 151 | 8/28/2024 |
2024.1.26 | 309 | 8/15/2024 |
2024.1.25 | 298 | 7/22/2024 |
2024.1.24 | 1,051 | 7/12/2024 |
2024.1.23 | 187 | 6/26/2024 |
2024.1.22 | 174 | 6/15/2024 |
2024.1.21 | 145 | 6/6/2024 |
2024.1.20 | 179 | 5/30/2024 |
2024.1.19 | 169 | 5/24/2024 |
2024.1.18 | 291 | 5/6/2024 |
2024.1.17 | 129 | 5/3/2024 |
2024.1.16 | 195 | 4/30/2024 |
2024.1.15 | 156 | 4/29/2024 |
2024.1.14 | 189 | 4/23/2024 |
2024.1.13 | 147 | 4/23/2024 |
2024.1.12 | 190 | 4/17/2024 |
2024.1.11-rc | 146 | 4/11/2024 |
2024.1.10-rc | 136 | 4/4/2024 |
2024.1.9-rc | 124 | 3/27/2024 |
2024.1.8-preview | 97 | 3/25/2024 |
2024.1.7-preview | 139 | 3/19/2024 |
2024.1.6-preview | 131 | 3/6/2024 |
2024.1.5-preview | 136 | 2/29/2024 |
2024.1.4-preview | 167 | 2/27/2024 |
2024.1.3-preview | 131 | 2/23/2024 |
2024.1.2-preview | 129 | 2/7/2024 |
2024.1.1-preview | 116 | 1/30/2024 |
2024.0.16 | 183 | 6/15/2024 |
2024.0.15 | 139 | 6/6/2024 |
2024.0.14 | 142 | 5/30/2024 |
2024.0.13 | 144 | 5/24/2024 |
2024.0.12 | 172 | 4/17/2024 |
2024.0.11 | 173 | 3/21/2024 |
2024.0.10 | 139 | 3/19/2024 |
2024.0.9 | 178 | 2/29/2024 |
2024.0.8 | 168 | 2/23/2024 |
2024.0.7 | 175 | 2/7/2024 |
2024.0.6 | 225 | 1/3/2024 |
2024.0.5-rc | 189 | 12/21/2023 |
2024.0.4-rc | 155 | 12/12/2023 |
2024.0.3-preview | 173 | 12/6/2023 |
2024.0.2-preview | 176 | 11/14/2023 |
2024.0.1-preview | 143 | 11/6/2023 |
2023.4.9 | 159 | 2/7/2024 |
2023.4.8 | 195 | 12/21/2023 |
2023.4.7 | 194 | 12/12/2023 |
2023.4.6 | 231 | 11/7/2023 |
2023.4.5-rc | 160 | 10/26/2023 |
2023.4.4-preview | 160 | 10/18/2023 |
2023.4.3-preview | 165 | 10/4/2023 |
2023.4.2-preview | 169 | 9/26/2023 |
2023.3.10-preview | 157 | 12/21/2023 |
2023.3.9-preview | 151 | 12/12/2023 |
2023.3.8-preview | 157 | 10/17/2023 |
2023.3.7-preview | 157 | 9/29/2023 |
2023.3.6-preview | 152 | 9/26/2023 |
2023.3.5-preview | 198 | 9/13/2023 |
2023.3.4-preview | 212 | 8/30/2023 |