ExhaustiveMatch.Generator
1.0.2
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package ExhaustiveMatch.Generator --version 1.0.2
NuGet\Install-Package ExhaustiveMatch.Generator -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ExhaustiveMatch.Generator" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ExhaustiveMatch.Generator --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ExhaustiveMatch.Generator, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ExhaustiveMatch.Generator as a Cake Addin #addin nuget:?package=ExhaustiveMatch.Generator&version=1.0.2 // Install ExhaustiveMatch.Generator as a Cake Tool #tool nuget:?package=ExhaustiveMatch.Generator&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
GenerateMatch
Generate a .Match
method to switch over types with a known set of cases.
The idea is to create expression-style switch statements that ensure all conditions are handled.
The supported types are:
enums:
Match
will take function parameters for each case of the enumenumeration classes: The source generator will infer each internal class case
[GenerateMatch] public abstract record Result<T, R> { public record Ok(T Value): Result<T, R>; public record Error(R Value): Result<T, R>; } var res = new Result<int, string>.Ok(100); Assert.Equal("100", res.MatchResult => ok.Value.ToString(), error => error.Value.ToString())); // -- generated -- public static class GenericResultExampleMatchExtensions { public static TReturnType Match<TReturnType, T, R> (this Result<T, R> t, Func<Result<T, R>.Ok,TReturnType> whenOk, Func<Result<T, R>.Error,TReturnType> whenError) { if (t is Result<T, R>.Ok t0) return whenOk.Invoke(t0); if (t is Result<T, R>.Error t1) return whenError.Invoke(t1); throw new Exception("Unreachable"); } public static TReturnType Match<TReturnType, T, R> (this Result<T, R> t, TReturnType whenOk, TReturnType whenError) { if (t is Result<T, R>.Ok t0) return whenOk; if (t is Result<T, R>.Error t1) return whenError; throw new Exception("Unreachable"); } }
There are no supported framework assets in this package.
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 3.9.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.