| 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