Metalama.Patterns.Contracts
2026.0.2-preview
Prefix Reserved
dotnet add package Metalama.Patterns.Contracts --version 2026.0.2-preview
NuGet\Install-Package Metalama.Patterns.Contracts -Version 2026.0.2-preview
<PackageReference Include="Metalama.Patterns.Contracts" Version="2026.0.2-preview" />
<PackageVersion Include="Metalama.Patterns.Contracts" Version="2026.0.2-preview" />
<PackageReference Include="Metalama.Patterns.Contracts" />
paket add Metalama.Patterns.Contracts --version 2026.0.2-preview
#r "nuget: Metalama.Patterns.Contracts, 2026.0.2-preview"
#:package Metalama.Patterns.Contracts@2026.0.2-preview
#addin nuget:?package=Metalama.Patterns.Contracts&version=2026.0.2-preview&prerelease
#tool nuget:?package=Metalama.Patterns.Contracts&version=2026.0.2-preview&prerelease
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 notnulland 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 givenenumtype.
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 parameterlessvoidmethod) 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:
- API documentation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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 was computed. net472 is compatible. 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.2
- Metalama.Framework (>= 2026.0.2-preview)
-
.NETStandard 2.0
- Metalama.Framework (>= 2026.0.2-preview)
-
net8.0
- Metalama.Framework (>= 2026.0.2-preview)
NuGet packages (8)
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. |
|
|
Metalama.Patterns.Caching.Backends.Redis
Redis back-end for Metalama.Patterns.Caching. Implements both caching and cache invalidation over Redis Pub/Sub |
|
|
Metalama.Patterns.Caching.Backends.Azure
Synchronizes the invalidation of distributed Metalama.Patterns.Caching caches over Azure Service Bus. |
|
|
Atesh.Metalama
Atesh.Metalama library is a collection of custom made Metalama Aspects (a.k.a Attributes). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.0.2-preview | 285 | 10/7/2025 |
| 2026.0.1-preview | 206 | 10/4/2025 |
| 2025.2.5-rc | 286 | 10/7/2025 |
| 2025.2.4-rc | 270 | 10/1/2025 |
| 2025.2.2-preview | 772 | 9/19/2025 |
| 2025.2.1-preview | 284 | 9/9/2025 |
| 2025.1.16 | 120 | 10/22/2025 |
| 2025.1.15 | 285 | 10/7/2025 |
| 2025.1.14 | 313 | 9/30/2025 |
| 2025.1.13 | 294 | 9/5/2025 |
| 2025.1.12 | 534 | 8/7/2025 |
| 2025.1.11 | 655 | 7/23/2025 |
| 2025.1.10 | 564 | 7/3/2025 |
| 2025.1.9 | 738 | 5/29/2025 |
| 2025.1.8 | 361 | 5/26/2025 |
| 2025.1.7 | 372 | 5/22/2025 |
| 2025.1.6 | 421 | 5/15/2025 |
| 2025.1.5 | 1,073 | 5/2/2025 |
| 2025.1.4-rc | 434 | 4/15/2025 |
| 2025.1.3-rc | 397 | 4/9/2025 |
| 2025.1.2-preview | 376 | 4/1/2025 |
| 2025.1.1-preview | 345 | 3/18/2025 |
| 2025.0.12 | 249 | 5/22/2025 |
| 2025.0.11 | 227 | 5/2/2025 |
| 2025.0.10 | 354 | 3/31/2025 |
| 2025.0.9 | 968 | 3/7/2025 |
| 2025.0.8 | 536 | 1/6/2025 |
| 2025.0.7-rc | 322 | 12/6/2024 |
| 2025.0.6-rc | 299 | 11/15/2024 |
| 2025.0.5-preview | 215 | 11/8/2024 |
| 2025.0.4-preview | 162 | 10/31/2024 |
| 2025.0.3-preview | 180 | 10/25/2024 |
| 2025.0.2-preview | 190 | 10/24/2024 |
| 2025.0.1-preview | 193 | 10/14/2024 |
| 2024.2.32 | 303 | 3/7/2025 |
| 2024.2.31 | 240 | 12/6/2024 |
| 2024.2.30 | 255 | 11/15/2024 |
| 2024.2.29 | 309 | 10/31/2024 |
| 2024.2.28 | 206 | 10/25/2024 |
| 2024.2.27 | 215 | 10/24/2024 |
| 2024.2.26 | 336 | 10/14/2024 |
| 2024.2.25 | 272 | 10/2/2024 |
| 2024.2.24 | 24,182 | 9/10/2024 |
| 2024.2.23 | 1,967 | 8/30/2024 |
| 2024.2.22 | 300 | 8/29/2024 |
| 2024.2.21 | 420 | 8/28/2024 |
| 2024.2.20 | 1,138 | 8/15/2024 |
| 2024.2.19 | 894 | 8/1/2024 |
| 2024.2.18 | 391 | 7/29/2024 |
| 2024.2.17-rc | 214 | 7/22/2024 |
| 2024.2.16-rc | 253 | 7/18/2024 |
| 2024.2.15-rc | 272 | 7/12/2024 |
| 2024.2.14-rc | 302 | 7/8/2024 |
| 2024.2.13-rc | 213 | 7/2/2024 |
| 2024.2.12-preview | 346 | 6/28/2024 |
| 2024.2.11-preview | 222 | 6/26/2024 |
| 2024.2.10-preview | 205 | 6/20/2024 |
| 2024.2.9-preview | 264 | 6/11/2024 |
| 2024.2.8-preview | 180 | 6/6/2024 |
| 2024.2.7-preview | 217 | 5/30/2024 |
| 2024.2.6-preview | 205 | 5/25/2024 |
| 2024.2.5-preview | 233 | 5/6/2024 |
| 2024.2.4-preview | 214 | 5/4/2024 |
| 2024.2.3-preview | 190 | 4/30/2024 |
| 2024.2.2-preview | 200 | 4/23/2024 |
| 2024.2.1-preview | 225 | 4/11/2024 |
| 2024.1.30 | 210 | 10/24/2024 |
| 2024.1.29 | 205 | 10/11/2024 |
| 2024.1.28 | 233 | 9/9/2024 |
| 2024.1.27 | 242 | 8/28/2024 |
| 2024.1.26 | 409 | 8/15/2024 |
| 2024.1.25 | 400 | 7/22/2024 |
| 2024.1.24 | 1,165 | 7/12/2024 |
| 2024.1.23 | 283 | 6/26/2024 |
| 2024.1.22 | 266 | 6/15/2024 |
| 2024.1.21 | 221 | 6/6/2024 |
| 2024.1.20 | 280 | 5/30/2024 |
| 2024.1.19 | 258 | 5/24/2024 |
| 2024.1.18 | 403 | 5/6/2024 |
| 2024.1.17 | 226 | 5/3/2024 |
| 2024.1.16 | 287 | 4/30/2024 |
| 2024.1.15 | 245 | 4/29/2024 |
| 2024.1.14 | 318 | 4/23/2024 |
| 2024.1.13 | 236 | 4/23/2024 |
| 2024.1.12 | 265 | 4/17/2024 |
| 2024.1.11-rc | 210 | 4/11/2024 |
| 2024.1.10-rc | 234 | 4/4/2024 |
| 2024.1.9-rc | 205 | 3/27/2024 |
| 2024.1.8-preview | 178 | 3/25/2024 |
| 2024.1.7-preview | 228 | 3/19/2024 |
| 2024.1.6-preview | 216 | 3/6/2024 |
| 2024.1.5-preview | 220 | 2/29/2024 |
| 2024.1.4-preview | 248 | 2/27/2024 |
| 2024.1.3-preview | 219 | 2/23/2024 |
| 2024.1.2-preview | 197 | 2/7/2024 |
| 2024.1.1-preview | 202 | 1/30/2024 |
| 2024.0.16 | 279 | 6/15/2024 |
| 2024.0.15 | 216 | 6/6/2024 |
| 2024.0.14 | 232 | 5/30/2024 |
| 2024.0.13 | 239 | 5/24/2024 |
| 2024.0.12 | 239 | 4/17/2024 |
| 2024.0.11 | 242 | 3/21/2024 |
| 2024.0.10 | 242 | 3/19/2024 |
| 2024.0.9 | 257 | 2/29/2024 |
| 2024.0.8 | 268 | 2/23/2024 |
| 2024.0.7 | 245 | 2/7/2024 |
| 2024.0.6 | 321 | 1/3/2024 |
| 2024.0.5-rc | 263 | 12/21/2023 |
| 2024.0.4-rc | 230 | 12/12/2023 |
| 2024.0.3-preview | 245 | 12/6/2023 |
| 2024.0.2-preview | 262 | 11/14/2023 |
| 2024.0.1-preview | 231 | 11/6/2023 |
| 2023.4.9 | 246 | 2/7/2024 |
| 2023.4.8 | 287 | 12/21/2023 |
| 2023.4.7 | 266 | 12/12/2023 |
| 2023.4.6 | 315 | 11/7/2023 |
| 2023.4.5-rc | 230 | 10/26/2023 |
| 2023.4.4-preview | 220 | 10/18/2023 |
| 2023.4.3-preview | 235 | 10/4/2023 |
| 2023.4.2-preview | 255 | 9/26/2023 |
| 2023.3.10-preview | 227 | 12/21/2023 |
| 2023.3.9-preview | 232 | 12/12/2023 |
| 2023.3.8-preview | 250 | 10/17/2023 |
| 2023.3.7-preview | 246 | 9/29/2023 |
| 2023.3.6-preview | 240 | 9/26/2023 |
| 2023.3.5-preview | 295 | 9/13/2023 |
| 2023.3.4-preview | 338 | 8/30/2023 |