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