RSCG – M31.FluentAPI
| name | M31.FluentAPI |
| nuget | https://www.nuget.org/packages/M31.FluentAPI/ |
| link | https://www.m31coding.com/blog/fluent-api.html |
| author | Kevin Schaal |
Builder for your class. But the order counts – generates a new interface each time
This is how you can use M31.FluentAPI .
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>
<ItemGroup>
<PackageReference Include="M31.FluentApi" Version="1.0.0" PrivateAssets="all"/>
</ItemGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
</Project>
The code that you will use is
using M31FluentAPIDemo;
Console.WriteLine("Hello,World!");
var p =CreatePerson
//the order does matter
.Named("Andrei","Ignat")
.HasDOB(null);
using M31.FluentApi.Attributes;
namespace M31FluentAPIDemo;
[FluentApi]
internal class Person
{
[FluentMember(0,"Named",0)]
public string FirstName { get; set; } = string.Empty;
[FluentMember(0,"Named",1)]
public string? LastName { get; set; }
[FluentMember(1,"HasDOB")]
public DateTime? DOB { get; set; }
}
The code that is generated is
// <auto-generated/>
// This code was generated by the library M31.FluentAPI.
// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
#nullable enable
using M31.FluentApi.Attributes;
namespace M31FluentAPIDemo;
internal class CreatePerson : CreatePerson.IHasDOB
{
private readonly Person person;
private CreatePerson()
{
person = new Person();
}
public static IHasDOB Named(string firstName,string? lastName)
{
CreatePerson createPerson = new CreatePerson();
createPerson.person.FirstName = firstName;
createPerson.person.LastName = lastName;
return createPerson;
}
public Person HasDOB(System.DateTime? dOB)
{
person.DOB = dOB;
return person;
}
internal interface IHasDOB
{
Person HasDOB(System.DateTime? dOB);
}
}
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/M31.FluentAPI
Leave a Reply