Biwen.AutoClassGen
1.0.0.6
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Biwen.AutoClassGen --version 1.0.0.6
NuGet\Install-Package Biwen.AutoClassGen -Version 1.0.0.6
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Biwen.AutoClassGen" Version="1.0.0.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Biwen.AutoClassGen --version 1.0.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Biwen.AutoClassGen, 1.0.0.6"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Biwen.AutoClassGen as a Cake Addin #addin nuget:?package=Biwen.AutoClassGen&version=1.0.0.6 // Install Biwen.AutoClassGen as a Cake Tool #tool nuget:?package=Biwen.AutoClassGen&version=1.0.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Biwen.AutoClassGen
Usage scenario: In many cases, we will have a lot of request objects, such as GetIdRequest, GetUserRequest, etc..., and these requests may have a large number of the same fields. For example, the multi-tenant Id, the number of pages, and these attribute fields may have validation rules, binding rules, and Swagger descriptions. If all this code needs to be written, it will add a lot of work, so Biwen.AutoClassGen came into being to solve this pain point...
Useage
1.Define Interface
/// <summary>
/// Pager Interface
/// </summary>
public interface IPager
{
/// <summary>
/// current page
/// </summary>
[DefaultValue(0), Description("start 0 to int.max")]
[Range(0, int.MaxValue)]
int? CurrentPage { get; set; }
/// <summary>
/// length of page
/// </summary>
[DefaultValue(10), Description("between 10 an 30")]
[Range(10, 30)]
int? PageLen { get; set; }
}
/// <summary>
/// Query Interface
/// </summary>
public interface IQuery
{
/// <summary>
/// KeyWord
/// </summary>
[StringLength(100), Description("Keyword for search")]
string? KeyWord { get; set; }
}
/// <summary>
/// Tenant Request
/// </summary>
public interface ITenantRequest
{
/// <summary>
/// TenantId
/// </summary>
[Required, Description("Tenant ID"), DefaultValue("default")]
[FromHeader(Name = "tenant-id")]
string? TenantId { get; set; }
}
2.Inherent interface and mark [AutoGen] Attribute
//can add multi AutoGen Attribute
[AutoGen("QueryRequest", "Biwen.AutoClassGen.Models")]
[AutoGen("Query2Request", "Biwen.AutoClassGen.Models")]
public interface IQueryRequest : IPager, IQuery
{
}
/// <summary>
/// MyTenantRequest
/// </summary>
[AutoGen("MyTenantRequest", "Biwen.AutoClassGen.Models")]
public interface ITenantRealRequest : ITenantRequest
{
}
//partial class for your logic
public partial class QueryRequest
{
public string TestMethod(string arg1, int arg2)
{
return $"{arg1} {arg2}";
}
}
3.Enjoy!!! finally auto generated class for you
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text;
using System.Threading.Tasks;
using Biwen.AutoClassGen.TestConsole.Interfaces;
#pragma warning disable
namespace Biwen.AutoClassGen.Models
{
public partial class QueryRequest : IQueryRequest
{
/// <inheritdoc cref = "IPager.CurrentPage"/>
[System.ComponentModel.DefaultValueAttribute(0)]
[System.ComponentModel.DescriptionAttribute("start 0 to int.max")]
[System.ComponentModel.DataAnnotations.RangeAttribute(0, 2147483647)]
public int? CurrentPage { get; set; }
/// <inheritdoc cref = "IPager.PageLen"/>
[System.ComponentModel.DefaultValueAttribute(10)]
[System.ComponentModel.DescriptionAttribute("between 10 an 30")]
[System.ComponentModel.DataAnnotations.RangeAttribute(10, 30)]
public int? PageLen { get; set; }
/// <inheritdoc cref = "IQuery.KeyWord"/>
[System.ComponentModel.DataAnnotations.StringLengthAttribute(100)]
[System.ComponentModel.DescriptionAttribute("Keyword for search")]
public string? KeyWord { get; set; }
}
public partial class Query2Request : IQueryRequest
{
/// <inheritdoc cref = "IPager.CurrentPage"/>
[System.ComponentModel.DefaultValueAttribute(0)]
[System.ComponentModel.DescriptionAttribute("start 0 to int.max")]
[System.ComponentModel.DataAnnotations.RangeAttribute(0, 2147483647)]
public int? CurrentPage { get; set; }
/// <inheritdoc cref = "IPager.PageLen"/>
[System.ComponentModel.DefaultValueAttribute(10)]
[System.ComponentModel.DescriptionAttribute("between 10 an 30")]
[System.ComponentModel.DataAnnotations.RangeAttribute(10, 30)]
public int? PageLen { get; set; }
/// <inheritdoc cref = "IQuery.KeyWord"/>
[System.ComponentModel.DataAnnotations.StringLengthAttribute(100)]
[System.ComponentModel.DescriptionAttribute("Keyword for search")]
public string? KeyWord { get; set; }
}
public partial class MyTenantRequest : ITenantRealRequest
{
/// <inheritdoc cref = "ITenantRequest.TenantId"/>
[System.ComponentModel.DataAnnotations.RequiredAttribute]
[System.ComponentModel.DescriptionAttribute("Tenant ID")]
[System.ComponentModel.DefaultValueAttribute("default")]
[Microsoft.AspNetCore.Mvc.FromHeaderAttribute(Name = "tenant-id")]
public string? TenantId { get; set; }
}
}
#pragma warning restore
Report Diagnostic Code
- GEN001: The interface marked [AutoGen] should be inherent one or more interface
- GEN011: Illegal naming
- GEN021: It is recommended to use the same namespace name
- GEN031: Suggestions to use [AutoGen] attribute to mark the interface
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.5.4 | 96 | 11/27/2024 |
1.5.3 | 121 | 11/12/2024 |
1.5.2 | 87 | 11/8/2024 |
1.5.1.3 | 118 | 9/26/2024 |
1.5.0 | 103 | 9/18/2024 |
1.3.9.9 | 107 | 9/13/2024 |
1.3.8 | 119 | 9/5/2024 |
1.3.7.2 | 106 | 9/4/2024 |
1.3.6 | 109 | 8/30/2024 |
1.3.3 | 135 | 6/19/2024 |
1.3.2.3 | 251 | 4/10/2024 |
1.2.1.3 | 198 | 1/22/2024 |
1.2.1.2 | 306 | 11/12/2023 |
1.2.0 | 201 | 11/7/2023 |
1.1.0.2 | 185 | 11/5/2023 |
1.0.0.6 | 151 | 11/4/2023 |
1.0.0 | 141 | 10/31/2023 |
Biwen.AutoClassGen