RSCG – PMart.Enumeration

RSCG – PMart.Enumeration    

name PMart.Enumeration
nuget https://www.nuget.org/packages/PMart.Enumeration.Generator/ https://www.nuget.org/packages/PMart.Enumeration/
link https://github.com/p-martinho/Enumeration
author Martinho

Constants as enumeration. With EFCore, Swagger and other implementations.

 

This is how you can use PMart.Enumeration .

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> 	<ItemGroup>  		<PackageReference Include="PMart.Enumeration" Version="3.1.0" /> 		<PackageReference Include="PMart.Enumeration.Generator" Version="3.1.0" PrivateAssets="all" ExcludeAssets="runtime" />  	</ItemGroup> 	<PropertyGroup> 		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> 		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath> 	</PropertyGroup> </Project>   

The code that you will use is

  using DemoPMart;  var personType= PersonType.GetFromValueOrDefault("test"); Console.WriteLine(personType?.Value??"null"); personType = PersonType.GetFromValueOrDefault("manager"); Console.WriteLine(personType!.Value); Console.WriteLine(PersonType.Manager == personType);   
  using PMart.Enumeration.Generator.Attributes;  namespace DemoPMart; [Enumeration] public partial class PersonType {     private static readonly string ValueForEmployee = "Employee";     private static readonly string ValueForManager = "Manager";   }   

  The code that is generated is

 // <auto-generated> //     This code was generated by the PMart.Enumeration.Generator source generator. // </auto-generated>  #nullable enable  namespace DemoPMart {     public partial class PersonType : global::PMart.Enumeration.Enumeration<global::DemoPMart.PersonType>     {         [global::System.CodeDom.Compiler.GeneratedCodeAttribute("PMart.Enumeration.Generator", "3.1.0.0")]         public static readonly global::DemoPMart.PersonType Employee = new global::DemoPMart.PersonType(ValueForEmployee!);          [global::System.CodeDom.Compiler.GeneratedCodeAttribute("PMart.Enumeration.Generator", "3.1.0.0")]         public static readonly global::DemoPMart.PersonType Manager = new global::DemoPMart.PersonType(ValueForManager!);          [global::System.CodeDom.Compiler.GeneratedCodeAttribute("PMart.Enumeration.Generator", "3.1.0.0")]         private PersonType(string value) : base(value)         {         }     } } 

Code and pdf at https://ignatandrei.github.io/RSCG_Examples/v2/docs/PMart.Enumeration