AutoInit 0.0.2
dotnet add package AutoInit --version 0.0.2
NuGet\Install-Package AutoInit -Version 0.0.2
<PackageReference Include="AutoInit" Version="0.0.2" />
<PackageVersion Include="AutoInit" Version="0.0.2" />
<PackageReference Include="AutoInit" />
paket add AutoInit --version 0.0.2
#r "nuget: AutoInit, 0.0.2"
#:package AutoInit@0.0.2
#addin nuget:?package=AutoInit&version=0.0.2
#tool nuget:?package=AutoInit&version=0.0.2
๐งฉ AutoInit โ Constructor Injection Made Easy
AutoInit is a lightweight source generator that eliminates the need to write constructors for dependency injection manually. Simply decorate your fields with [AutoInit] and you're done โ the generator will create the constructor for you at compile time.
๐ฆ Installation
Via .NET CLI
dotnet add package AutoInit
Or via NuGet Package Manager
Install-Package AutoInit
โจ Usage
Step 1: Add [AutoInit] to your fields
using AutoInit;
public partial class MyService
{
[AutoInit] private readonly ILogger<MyService> _logger;
[AutoInit] private readonly IUserRepository _userRepo;
}
Step 2: Mark the class as partial
The class must be marked partial so the generator can extend it.
public partial class MyService
{
// ...
}
Result: Constructor is auto-generated
When you build your project, the generator creates a constructor like this:
public MyService(ILogger<MyService> logger, IUserRepository userRepo)
{
_logger = logger;
_userRepo = userRepo;
}
โ Requirements
- The class must be partial
- The class must not already have a constructor
[AutoInit]only works on fields (properties are not yet supported)- The field should be
readonlyfor immutability (recommended, but not required)
โ What if something is wrong?
If your class does not meet the requirements, the generator will raise clear compiler diagnostics:
| Code | Message |
|---|---|
| FS001 | Class must be marked as partial |
| FS002 | Class already has a constructor; cannot auto-generate another one |
๐งช Full Example
using AutoInit;
namespace MyApp.Services;
public partial class UserService
{
[AutoInit] private readonly IUserRepository _userRepo;
[AutoInit] private readonly ILogger<UserService> _logger;
}
After build:
namespace MyApp.Services
{
public partial class UserService
{
public UserService(IUserRepository userRepo, ILogger<UserService> logger)
{
_userRepo = userRepo;
_logger = logger;
}
}
}
๐ค Why use AutoInit?
- Clean, DRY code โ no need to write boring constructors
- Zero reflection โ compile-time generated, type-safe code
- Fully compatible with built-in .NET Dependency Injection
- Great for services, handlers, and any DI-heavy classes
๐ฎ Roadmap
- Support for properties
- Ability to ignore specific fields via config
- Merge support for classes that already have constructors
๐ฌ Feedback & Contributions
This project is still growing! If you have ideas, suggestions, or want to contribute โ feel free to open issues or PRs.
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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
- Microsoft.CodeAnalysis.CSharp (>= 5.6.0)
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 |
|---|---|---|
| 0.0.2 | 98 | 7/11/2026 |