RSCG – requiredenum
| name | requiredenum |
| nuget | https://www.nuget.org/packages/requiredenum/ |
| link | https://github.com/emptycoder/RequiredEnum |
| author | Yaroslav |
Raise an error at compile time if not have switch handle case all enums values
This is how you can use requiredenum .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="RequiredEnum" Version="0.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
The code that you will use is
// See https://aka.ms/new-console-template for more information
using EnumDemo;
Console.WriteLine("Hello, World!");
RequiredCarTypes myCar = RequiredCarTypes.Tesla;
switch(myCar)
{
//comment any case to see the error in action
case RequiredCarTypes.None:
Console.WriteLine("No car");
break;
case RequiredCarTypes.Dacia:
Console.WriteLine("Dacia");
break;
case RequiredCarTypes.Tesla:
Console.WriteLine("Tesla");
break;
case RequiredCarTypes.BMW:
Console.WriteLine("BMW");
break;
case RequiredCarTypes.Mercedes:
Console.WriteLine("Mercedes");
break;
default:
Console.WriteLine("Unknown car");
break;
}
namespace EnumDemo;
public enum RequiredCarTypes
{
None,
Dacia ,
Tesla ,
BMW ,
Mercedes ,
}
The code that is generated is
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/requiredenum