| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Generate extension method to fluent set member for class, strcut, interface.
| Name | NuGet | MyGet |
|---|---|---|
| GodSharp.FluentMember |
Install Package
<ItemGroup>
<PackageReference Include="GodSharp.FluentMember" Version="2021.206.26" />
</ItemGroup>Add Attribute
[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:
//----------------------------------------------------------------------- -------
// <auto-generated>
// Generated by SourceGenerator generator at 2022/6/26 15:07:32.
// Source: User
// </auto-generated>
//------------------------------------------------------------------------------
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<TMember>(Expression<Func<User,TMember>> 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<TMember>(this User user, Expression<Func<User,TMember>> predicate, TMember value)
=> TypeSetter.Set(user, predicate, value);
}MIT
| Back | FazBrowse Home | New Git URL |