RSCG – requiredenum

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


Posted

in

, ,

by

Tags: