ControllerGenerator.Abstraction
1.3.0
dotnet add package ControllerGenerator.Abstraction --version 1.3.0
NuGet\Install-Package ControllerGenerator.Abstraction -Version 1.3.0
<PackageReference Include="ControllerGenerator.Abstraction" Version="1.3.0" />
paket add ControllerGenerator.Abstraction --version 1.3.0
#r "nuget: ControllerGenerator.Abstraction, 1.3.0"
// Install ControllerGenerator.Abstraction as a Cake Addin #addin nuget:?package=ControllerGenerator.Abstraction&version=1.3.0 // Install ControllerGenerator.Abstraction as a Cake Tool #tool nuget:?package=ControllerGenerator.Abstraction&version=1.3.0
ControllerGenerator
ControllerGenerator | ControllerGenerator.Abstraction | Action |
---|---|---|
This project is an automatic controller generator for .NET projects. It uses Source Generator to automatically create controllers from specified services in a project containing the services.
Installation
To use this generator, you need to install the ControllerGenerator.Abstractions library in the project that contains the services you want to use for generating controllers.
Install-Package ControllerGenerator.Abstractions
In your web project, it is necessary to install the ControllerGenerator library
Install-Package ControllerGenerator
Usage
To have your services recognized by the generator, each service or its interface must inherit the IAutoGenerateController interface.
public interface IMyService : IAutoGenerateController
{
// Service methods
}
Request Generation based on Method Prefixes
Requests in the generated controllers are determined based on the method prefixes:
- If the service method starts with "Get", "Post", "Patch", "Update", "Create", or "Delete", the generated request will correspond to the respective HTTP methods.
- If there is no prefix, the generated request will be of type HTTP POST.
Attributes can be used in services. These will be recognized by the Source Generator
Requirements
The Source Generator library must be installed in the target project. The target project should be a .NET 7.0 web application or a higher version.
Example
Here's an example of using this generator:
// In the project containing the services
public interface IMyService : IAutoGenerateController
{
Task<User> GetUserAsync(int id);
Task<User> PostUser(UserData data);
Task UpdateUser(int id, UserData data);
// Other service methods
}
//Service implementation
public class MyService : IMyService
{
//Property, Ctor ....
[HttpGet] //it's not mandatory
[Authorize("Admin")]
public async Task<User> GetUserAsync(int id)
{
return await userList.FirstOrDefaultAsync(x => x.Id == id);
}
[NoGenerated] //This method is not generate for the controller
public Task<User> PostUser(UserData data)
{
throw new Exception("An error has occured")
}
//Other method...
}
// In the .NET 7.0 or higher web project
// The generator will automatically create a controller for IMyService with corresponding HTTP methods for each method in the service.
public class MyController : ControllerBase
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
// GET endpoint generated for GetUserAsync
[HttpGet("{id}")]
public IActionResult GetUser(int id)
{
// Implementation
}
// POST endpoint generated for PostUser
[HttpPost]
public IActionResult PostUser([FromBody] UserData data)
{
// Implementation
}
// Other endpoints for UpdateUser and other service methods
}
It is possible to replace a controller generated by the source generator by creating a controller that inherits the interface of the service to replace
public class MyController : ControllerBase, IMyService
{
//Implement the interface to replace the self-generated controller
}
Disclaimer
This generator uses Source Generator to automatically generate controllers. Make sure you understand how it works before using it in your project. Please perform thorough testing to ensure that the generated controllers meet your requirements.
Contributing
Contributions are welcome! Please see the CONTRIBUTING.md file for information on how to contribute to this project.
License
This project is licensed under the MIT License.
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 (1)
Showing the top 1 NuGet packages that depend on ControllerGenerator.Abstraction:
Package | Downloads |
---|---|
ControllerGenerator
Automatically generate controllers using a source generator. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Added NoGenerated attribute