RSCG – AutoCtor
RSCG – AutoCtor
name | AutoCtor |
nuget | https://www.nuget.org/packages/AutoCtor/ |
link | |
author | Cameron MacFarland |
Generate constructor from non-initialized fields
This is how you can use AutoCtor .
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="AutoCtor" Version="1.0.0" /> </ItemGroup> </Project>
The code that you will use is
// See https://aka.ms/new-console-template for more information using AutoCtorDemo; Console.WriteLine("Hello, World!"); var p = new Person("Andrei", "Ignat");
using AutoCtor; namespace AutoCtorDemo; [AutoConstruct] internal partial class Person { private readonly string FirstName; private readonly string? LastName; }
The code that is generated is
//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by https://github.com/distantcam/AutoCtor // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ #if AUTOCTOR_EMBED_ATTRIBUTES namespace AutoCtor { [System.Runtime.CompilerServices.CompilerGenerated] [System.AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = false)] [System.Diagnostics.Conditional("AUTOCTOR_USAGES")] internal sealed class AutoConstructAttribute : System.Attribute { [System.Runtime.CompilerServices.CompilerGenerated] public AutoConstructAttribute() { } } } #endif
//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by https://github.com/distantcam/AutoCtor // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace AutoCtorDemo { partial class Person { public Person(string FirstName, string LastName) { this.FirstName = FirstName; this.LastName = LastName; } } }
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/AutoCtor
Leave a Reply