File tree Expand file tree Collapse file tree
v2/rscg_examples/OrderedBuildersGenerator Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ {
2+ "generator" :{
3+ "name" :" OrderedBuildersGenerator" ,
4+ "nuget" :[
5+ " https://www.nuget.org/packages/OrderedBuildersGenerator/"
6+ ],
7+ "link" :" https://github.com/Georgiy-Petrov/OrderedBuildersGenerator" ,
8+ "author" :" Georgiy Petrov" ,
9+ "source" :" https://github.com/Georgiy-Petrov/OrderedBuildersGenerator"
10+ },
11+ "data" :{
12+ "goodFor" :[" Generating builder classes with enforced property setting order" ],
13+ "csprojDemo" :" Builder.csproj" ,
14+ "csFiles" :[" Program.cs" ," Person.cs" ],
15+ "excludeDirectoryGenerated" :[" " ],
16+ "includeAdditionalFiles" :[" " ]
17+ },
18+ "links" :{
19+ "blog" :" " ,
20+ "video" :" "
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ <Solution >
2+ <Project Path =" Builder/Builder.csproj" />
3+ </Solution >
Original file line number Diff line number Diff line change 1+ <Project Sdk =" Microsoft.NET.Sdk" >
2+
3+ <PropertyGroup >
4+ <OutputType >Exe</OutputType >
5+ <TargetFramework >net10.0</TargetFramework >
6+ <Nullable >enable</Nullable >
7+ </PropertyGroup >
8+
9+ <PropertyGroup >
10+ <EmitCompilerGeneratedFiles >true</EmitCompilerGeneratedFiles >
11+ <CompilerGeneratedFilesOutputPath >$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath >
12+ </PropertyGroup >
13+
14+ <ItemGroup >
15+ <PackageReference Include =" OrderedBuildersGenerator" Version =" 1.0.0" PrivateAssets =" all" OutputItemType =" Analyzer" />
16+ </ItemGroup >
17+
18+
19+
20+
21+ </Project >
Original file line number Diff line number Diff line change 1+ using OrderedBuildersGenerator ;
2+ using System ;
3+ using System . Xml . Linq ;
4+
5+ namespace Builder ;
6+
7+ [ StepBuilder ( "PersonBuilder" ) ]
8+ public partial class PersonConfig
9+ {
10+ private string ? firstName ;
11+
12+ private string lastName = string . Empty ;
13+
14+ [ OrderedStep ( StepOrder . One ) ]
15+ public void WithLastName ( string name )
16+ {
17+ this . lastName = name ;
18+
19+ }
20+ [ OrderedStep ( StepOrder . Two ) ]
21+ public void WithFirstName ( string name )
22+ {
23+ this . firstName = name ;
24+ }
25+ [ BuildStep ]
26+ public Person Build ( ) => new ( firstName ?? "" , lastName ) ;
27+
28+ }
29+
30+ public record Person ( string firstName , string lastName )
31+ {
32+ public string FullName ( ) => $ "{ firstName } { lastName } ";
33+ }
Original file line number Diff line number Diff line change 1+ using Builder ;
2+
3+ var p = new PersonBuilder ( )
4+ . WithLastName ( "Ignat" )
5+ . WithFirstName ( "Andrei" )
6+ . Build ( ) ;
7+ ;
8+
9+ Console . WriteLine ( p . FullName ( ) ) ;
Original file line number Diff line number Diff line change 1+ global using System ;
You can’t perform that action at this time.
0 commit comments