RSCG – RSCG_Static
name | RSCG_Static |
nuget | https://www.nuget.org/packages/RSCG_Static/ |
link | https://github.com/ignatandrei/RSCG_Static |
author | Andrei Ignat |
Generate interfaces and classes from static classes
This is how you can use RSCG_Static .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <PropertyGroup> <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="RSCG_Static" Version="2023.5.19.2037" /> </ItemGroup> </Project>
The code that you will use is
using RSCG_StaticDemo; //for DI, register //ISystem_DateTime with transient for new clsSystem_DateTime() Console.WriteLine("Hello World!"); ISystem_DateTime dateStatic = recSystem_DateTime.MakeNew();//static ISystem_DateTime dateVar = new clsSystem_DateTime(); //variable = real Console.WriteLine(dateStatic.Now.Second); Console.WriteLine(dateVar.Now.Second); await Task.Delay(10 * 1000); Console.WriteLine(dateStatic.Now.Second); Console.WriteLine(dateVar.Now.Second);
namespace RSCG_StaticDemo; public partial class StaticToInterface { public Type GenerateInterfaceFromDate() => typeof(DateTime); }
The code that is generated is
#nullable enable namespace RSCG_StaticDemo { public interface ISystem_DateTime { public System.DateTime Now {get;} public System.DateTime Today {get;} public System.DateTime UtcNow {get;} }// interface //now the partial class public record recSystem_DateTime (System.DateTime Now,System.DateTime Today,System.DateTime UtcNow) : ISystem_DateTime { public static recSystem_DateTime MakeNew() { return new recSystem_DateTime(System.DateTime.Now,System.DateTime.Today,System.DateTime.UtcNow); } //end makenew } //end record public class clsSystem_DateTime : ISystem_DateTime { public System.DateTime Now {get { return System.DateTime.Now; } } public System.DateTime Today {get { return System.DateTime.Today; } } public System.DateTime UtcNow {get { return System.DateTime.UtcNow; } } } //end class } // namespace #nullable disable
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/RSCG_Static
Leave a Reply