Skip to main content

πŸ—ΊοΈ Roadmap

πŸ“Š Current status​

PhaseDescriptionStatus
1πŸ—οΈ Foundation β€” InjectableAttribute, source generator, unit testsβœ… Done
2πŸ”Œ Attribute model, Microsoft DI integration, ordering, lifetimesβœ… Done
3πŸš€ NativeAOT / trimming validationβœ… Done
4πŸ“ˆ Benchmarks, Docusaurus website, CI hardeningβœ… Done
5πŸ“¦ NuGet publication and announcementβœ… Done
6🌟 Developer experience, ecosystem expansion🚧 In progress

For the full phase-by-phase checklist, see ROADMAP.md in the repository.


🌟 Phase 6 highlights β€” what's coming​

πŸ”¬ Source-generator quality​

  • GenDI.Analyzers companion package β€” IDE warnings for misconfigured [Injectable] / [Inject] usage
  • Code-fix provider: convert constructor injection to GenDI property injection automatically
  • Incremental generator optimization to reduce rebuild cost on partial changes

πŸ—‚οΈ Registration model​

  • βœ… [InjectOptional] β€” optional property injection (skips unregistered services gracefully)
  • βœ… [ConditionalInjectable(environmentName)] β€” environment-conditional registration
  • βœ… [DecoratorFor<TService>] β€” decorator pattern auto-wiring
  • βœ… Indirect injection via [Inject] with closed-generic-only implementation scanning
  • βœ… [Inject] lifetime override precedence (Inject > Injectable > ServiceInjection > Transient) and tie-break
  • βœ… Thread-isolation registration policy configurable via Injectable / ServiceInjection
  • βœ… Dependency scanning across referenced libraries for centralized registration
  • βœ… Closed-generic indirect inference for inferable concrete implementations
  • βœ… Explicit registration policy control via RegistrationMultiplicity and RegistrationEmissionStrategy (Single/Multiple, Add/TryAdd)
  • βœ… OptionConfigAttribute evolution: optional key fallback to type name + eligible-type constraints + AddOptions<T>().BindConfiguration(section) fast-path
  • βœ… Static factory registration with [InjectableFactory]
  • βœ… Module-based grouping with [InjectableModule]

Detailed notes for delivered RM-01..RM-12:

🌐 Platform support​

  • βœ… ASP.NET Core Minimal API example and docs
  • βœ… Blazor WebAssembly validated property injection
  • βœ… Worker Service and hosted service integration examples
  • βœ… MAUI / mobile AOT manual validation guidance for Android and iOS publish
  • βœ… F# attribute support exploration with current limitation documented

πŸ§ͺ Testing​

  • βœ… GenDI.Testing companion package with ServiceBuilder helper for unit tests using property injection
  • βœ… Integration with Microsoft.Extensions.DependencyInjection.Abstractions descriptor helpers
  • βœ… Real-world xUnit suite example using GenDI services and ServiceBuilder

πŸ› οΈ Tooling and IDE​

  • Visual Studio item-template: "GenDI Service" scaffold
  • dotnet new template: gendi-service
  • Rider live template

πŸ“‘ Observability​

  • [ObservableService] β€” auto-generated OpenTelemetry spans around service method calls
  • Startup registration summary log at Debug level

Want to help make any of these real? See Contributing to get started.

Canonical status matrix​

The canonical source-of-truth matrix is maintained in repository docs: