FaustVX.PrimaryParameter.SG 0.3.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package FaustVX.PrimaryParameter.SG --version 0.3.1
NuGet\Install-Package FaustVX.PrimaryParameter.SG -Version 0.3.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FaustVX.PrimaryParameter.SG" Version="0.3.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FaustVX.PrimaryParameter.SG --version 0.3.1
#r "nuget: FaustVX.PrimaryParameter.SG, 0.3.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FaustVX.PrimaryParameter.SG as a Cake Addin
#addin nuget:?package=FaustVX.PrimaryParameter.SG&version=0.3.1

// Install FaustVX.PrimaryParameter.SG as a Cake Tool
#tool nuget:?package=FaustVX.PrimaryParameter.SG&version=0.3.1

Primary Parameter

NuGet version (FaustVX.PrimaryParameter.SG) Update NuGet

Description

Using a Field or Property attributes on parameters.

Automaticaly generate private readonly fields or private property.

Forbid the use of primary constructor's parameters.

Usage

partial class C([Field(Name = "_a"), Field, [Property(WithInit = true)]]int i) // type must be partial, but can be class / struct
{
	// private readonly int _a = i; // generated field
	// private readonly int _i = i; // generated field
	// private int { get; init; } = i; // generated Property
    public void M0()
    {
        i++;                    // error on usage of i
        Console.WriteLine(i);   // error on usage of i
    }
    public void M1()
    {
        var i = 0;
        i++;                    // don't error on usage of locals
        Console.WriteLine(_i);  // automaticaly created readonly field
        Console.WriteLine(_a);	// automaticaly created readonly field based on Name property
        Console.WriteLine(I);  // automaticaly created readonly property
    }
}

To eneble the feaure, type [Field] or [Property] before the primary parameter you want.

You can type as many attributes as you want on a single parameter.

Attribute Properties

<table> <tr> <th>Attributes</th> <th>Property</th> <th>Comments</th> <th>Default value</th> </tr> <tr> <td><code>Field</code></td> <td><code>Name</code></td> <td>property to modify the generated field name</td> <td><code>_i</code> (for a parameter named <code>i</code>)</td> </tr> <tr> <td rowspan="3"><code>Property</code></td> <td><code>Name</code></td> <td>property to modify the generated property name</td> <td><code>I</code> (for a parameter named <code>i</code>)</td> </tr> <tr> <td><code>WithInit</code></td> <td>to generate the <code>init</code> accessor along the <code>get</code></td> <td><code>false</code></td> </tr> <tr> <td><code>Scope</code></td> <td>to change the scope of the generated property</td> <td><code>private</code></td> </tr> </table>

Versions

Version Date Comments
v0.3.1 21/04/2023 Added Scope property on Property attribute</br>Attributes are internal
v0.3.0 20/04/2023 Added Property attribute
v0.2.0 20/04/2023 Support for Name fields and multiple Field
v0.1.0 19/04/2023 Initial release
There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.3 251 12/1/2023
1.3.2 148 11/19/2023
1.3.1 99 11/19/2023
1.3.0 82 11/19/2023
1.2.0 227 8/24/2023
1.1.0 210 8/15/2023
1.0.0 124 7/31/2023
0.4.7 128 7/16/2023
0.4.6.1 125 7/16/2023
0.4.6 120 7/16/2023
0.4.5 117 5/17/2023
0.4.4 150 4/27/2023
0.4.3 149 4/27/2023
0.4.2 148 4/26/2023
0.4.1 150 4/25/2023
0.4.0 159 4/22/2023
0.3.1 155 4/20/2023
0.3.0 159 4/20/2023
0.2.0 152 4/20/2023
0.1.0 162 4/19/2023