Awaiten.Extensions.DependencyInjection
0.3.0
dotnet add package Awaiten.Extensions.DependencyInjection --version 0.3.0
NuGet\Install-Package Awaiten.Extensions.DependencyInjection -Version 0.3.0
<PackageReference Include="Awaiten.Extensions.DependencyInjection" Version="0.3.0" />
<PackageVersion Include="Awaiten.Extensions.DependencyInjection" Version="0.3.0" />
<PackageReference Include="Awaiten.Extensions.DependencyInjection" />
paket add Awaiten.Extensions.DependencyInjection --version 0.3.0
#r "nuget: Awaiten.Extensions.DependencyInjection, 0.3.0"
#:package Awaiten.Extensions.DependencyInjection@0.3.0
#addin nuget:?package=Awaiten.Extensions.DependencyInjection&version=0.3.0
#tool nuget:?package=Awaiten.Extensions.DependencyInjection&version=0.3.0
Awaiten
The async-first dependency injection container for .NET.
Awaiten is a Roslyn source generator that wires your object graph at build time. There is no runtime reflection, the generated code is plain readable C#, and your container is native-AOT clean. The configuration is verified by the compiler: missing, cyclic, ambiguous, and lifetime-mismatched registrations are build errors.
Its headline feature is async initialization. Services that need asynchronous setup after construction, like opening a connection or handshaking with hardware, are tracked through the graph. Reaching one before it is ready is a compile error.
Quick start
using Awaiten;
[Container]
[Singleton<EspressoMachine>]
[Scoped<Order>]
[Transient<Cup>]
public static partial class CoffeeShop;
await using var shop = new CoffeeShop.Root();
await shop.InitializeAsync(); // async-initialized services are warmed up
var cup = shop.Resolve<Cup>();
Install with:
dotnet add package Awaiten
Features
- Async initialization.
IAsyncInitializableservices are initialized in dependency order, and reaching one synchronously is a compile error. - Compile-time safety. Around 70 diagnostics turn wiring mistakes into build errors instead of startup crashes.
- No reflection. The generated code is plain C#, so the container is native-AOT clean and trim-safe.
- A full toolbox. Lifetimes, scopes, keyed services, decorators, composites, open generics, collections, factories, modules, assembly scanning, property injection, and
Owned<T>for disposable transients. - MS.DI interop. A separate package bridges into Microsoft.Extensions.DependencyInjection for ASP.NET Core and the generic host.
Packages
| Package | Description |
|---|---|
Awaiten |
The core: attributes, the source generator, and the runtime seams. No third-party dependencies. |
Awaiten.Extensions.DependencyInjection |
Microsoft.Extensions.DependencyInjection interop (ASP.NET Core, generic host, and other containers). |
Documentation
Full documentation lives at docs.testably.org/Awaiten.
- Getting started
- Registration: lifetimes, factories and instances, decorators, composites, keyed services, open generics, scanning, modules
- Resolution: resolving services, relationships, collections, keyed dictionaries, property injection, runtime arguments, context-aware factories
- Async initialization
- Lifetime and disposal: scopes, disposal, owned, lifetime safety, lifecycle hooks
- Advanced: external services, generic variance
- MS.DI bridge
- Diagnostics
- Complete example
| 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 is compatible. 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 is compatible. 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
- Awaiten (>= 0.3.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.9)
-
net10.0
- Awaiten (>= 0.3.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.9)
-
net8.0
- Awaiten (>= 0.3.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.