Biwen.AutoClassGen.Attributes
1.1.0
See the version list below for details.
dotnet add package Biwen.AutoClassGen.Attributes --version 1.1.0
NuGet\Install-Package Biwen.AutoClassGen.Attributes -Version 1.1.0
<PackageReference Include="Biwen.AutoClassGen.Attributes" Version="1.1.0" />
paket add Biwen.AutoClassGen.Attributes --version 1.1.0
#r "nuget: Biwen.AutoClassGen.Attributes, 1.1.0"
// Install Biwen.AutoClassGen.Attributes as a Cake Addin #addin nuget:?package=Biwen.AutoClassGen.Attributes&version=1.1.0 // Install Biwen.AutoClassGen.Attributes as a Cake Tool #tool nuget:?package=Biwen.AutoClassGen.Attributes&version=1.1.0
Biwen.AutoClassGen
- Gen Request Class for your API
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...
Gen DTO class for your API
Usage
1.Define unit 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 unit interfaces 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. |
-
.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.
SG