Monify 1.1.0
See the version list below for details.
dotnet add package Monify --version 1.1.0
NuGet\Install-Package Monify -Version 1.1.0
<PackageReference Include="Monify" Version="1.1.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="Monify" Version="1.1.0" />
<PackageReference Include="Monify"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add Monify --version 1.1.0
#r "nuget: Monify, 1.1.0"
#:package Monify@1.1.0
#addin nuget:?package=Monify&version=1.1.0
#tool nuget:?package=Monify&version=1.1.0
Monify

Monify, a .NET Roslyn source generator, automates the creation of strongly-typed wrappers around single values, improving semantic clarity, type safety, and maintainability.
Requirements
- C# v2.0 or later.
- Visual Studio 2022 v17.4 or later, or any compatible IDE that supports Roslyn source generators.
Installation
To install Monify, use the following command in your package manager console:
install-package Monify
Usage
Monify turns a class, record, or struct into a strongly typed wrapper around a single value. To opt in, annotate a partial type with the Monify attribute and specify the encapsulated value type.
using Monify;
[Monify<int>]
public partial struct Age;
For language versions earlier than C# 11:
using Monify;
[Monify(Type = typeof(int))]
public partial struct Age;
Generated Members
When applied, Monify generates the boilerplate needed for a lightweight value object:
- A private readonly field
_valuethat stores the encapsulated value. - A constructor accepting the underlying value:
Age(int value). - Implicit conversion operators to and from the encapsulated type.
- Implementations of
IEquatable<Age>andIEquatable<int>. - Equality (
==) and inequality (!=) operators for comparing with other instances or with the underlying value. - Overrides of
Equals(object),GetHashCode(), andToString().
Example
Age age = 42; // implicit conversion from int
int value = age; // implicit conversion to int
if (age == value)
{
// comparisons work with both Age and int
}
Classes annotated with Monify are sealed automatically to preserve immutability. Types must be partial and cannot declare additional state; the included analyzers will warn when these guidelines are not followed.
Analyzers
Monify includes several analyzers to assist engineers with its usage. These are:
| Rule ID | Category | Severity | Notes |
|---|---|---|---|
| MONFY01 | Usage | Warning | Type is not compatible with Monify |
| MONFY02 | Usage | Warning | Type is not Partial |
| MONFY03 | Design | Error | Type captures State |
| MONFY04 | Design | Error | Self Referencing Type |
Contributing
Contributions are welcome - see the CONTRIBUTING.md file for details.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
| 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 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. 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 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. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.