# 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


Generate extension method to fluent set member for `class`, `strcut`, `interface`.
## Package Version
|Name|NuGet|MyGet|
|---|---|---|
| GodSharp.FluentMember | [](https://www.nuget.org/packages/GodSharp.FluentMember) | [](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**