FaustVX.PrimaryParameter.SG
0.3.1
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
<PackageReference Include="FaustVX.PrimaryParameter.SG" Version="0.3.1" />
paket add FaustVX.PrimaryParameter.SG --version 0.3.1
#r "nuget: FaustVX.PrimaryParameter.SG, 0.3.1"
// 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
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 |
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- IndexRange (>= 1.0.2)
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 |