# FluentMember **Repository Path**: GodSharp/FluentMember ## Basic Information - **Project Name**: FluentMember - **Description**: Generate extension method to fluent set member for class, strcut, interface. - **Primary Language**: C# - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-28 - **Last Updated**: 2022-06-26 ## Categories & Tags **Categories**: utils **Tags**: None ## README # GodSharp.FluentMember ![Azure DevOps builds (main)](https://img.shields.io/azure-devops/build/godsharp/public/7/main?label=azure%20pipelines&style=flat-square) ![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/godsharp/FluentMember/continuous/main?label=github%20workflow&style=flat-square) Generate extension method to fluent set member for `class`, `strcut`, `interface`. ## Package Version |Name|NuGet|MyGet| |---|---|---| | GodSharp.FluentMember | [![NuGet](https://img.shields.io/nuget/v/GodSharp.FluentMember?style=flat-square)](https://www.nuget.org/packages/GodSharp.FluentMember) | [![MyGet](https://img.shields.io/myget/godsharp/v/GodSharp.FluentMember?style=flat-square&label=myget)](https://www.myget.org/feed/godsharp/package/nuget/GodSharp.FluentMember) | ## Get Started - Install Package ```c# ``` - Add Attribute ```c# [FluentMemberGenerator(Partial = true)] public partial class User { public int Id { get; internal set; } public int Age { get; set; } internal string Name { get; set; } public string Secret { get; private set; } public Role Role { get; set; } = new(); [FluentMemberGenerator(Partial = true)] public partial struct Address { public string Country { get; set; } public string City { get; set; } internal string Postcode { get; set; } public string Secret { get; private set; } } } ``` - Build Project You will be use fluent api to set member, like `With*` and `Set` method by extension method. generated code like this: ```c# //----------------------------------------------------------------------- ------- // // Generated by SourceGenerator generator at 2022/6/26 15:07:32. // Source: User // //------------------------------------------------------------------------------ using System; using System.Linq.Expressions; using GodSharp.FluentMember; namespace GodSharpFluentMemberTest; public partial class User { internal User WithId(Int32 id) { this.Id = id; return this; } public User WithAge(Int32 age) { this.Age = age; return this; } internal User WithName(String name) { this.Name = name; return this; } public User WithRole(Role role) { this.Role = role; return this; } public User Set(Expression> predicate, TMember value) => TypeSetter.Set(this,predicate,value); } public static class UserExtensions { internal static User WithId(this User user ,Int32 id) { user.Id = id; return user; } public static User WithAge(this User user ,Int32 age) { user.Age = age; return user; } internal static User WithName(this User user ,String name) { user.Name = name; return user; } public static User WithRole(this User user ,Role role) { user.Role = role; return user; } public static User Set(this User user, Expression> predicate, TMember value) => TypeSetter.Set(user, predicate, value); } ``` ## License **MIT**