FactoryGenerator.Microsoft.Extensions.DependencyInjection
0.0.22
dotnet add package FactoryGenerator.Microsoft.Extensions.DependencyInjection --version 0.0.22
NuGet\Install-Package FactoryGenerator.Microsoft.Extensions.DependencyInjection -Version 0.0.22
<PackageReference Include="FactoryGenerator.Microsoft.Extensions.DependencyInjection" Version="0.0.22" />
<PackageVersion Include="FactoryGenerator.Microsoft.Extensions.DependencyInjection" Version="0.0.22" />
<PackageReference Include="FactoryGenerator.Microsoft.Extensions.DependencyInjection" />
paket add FactoryGenerator.Microsoft.Extensions.DependencyInjection --version 0.0.22
#r "nuget: FactoryGenerator.Microsoft.Extensions.DependencyInjection, 0.0.22"
#:package FactoryGenerator.Microsoft.Extensions.DependencyInjection@0.0.22
#addin nuget:?package=FactoryGenerator.Microsoft.Extensions.DependencyInjection&version=0.0.22
#tool nuget:?package=FactoryGenerator.Microsoft.Extensions.DependencyInjection&version=0.0.22
FactoryGenerator
.NET source generator that automatically generates and registers factories
Installation
Add the following packages to your project:
$ dotnet add package FactoryGenerator.Abstractions
$ dotnet add package FactoryGenerator.Microsoft.Extensions.DependencyInjection
Usage
Add the attribute to your class
Use one of the GenerateIFactory
attributes to specify how your factory should be
generated:
[GenerateIFactory<int>]
public class Service(int value, Dependency dependency)
{
// ...
}
This will generate an implementation of IFactory<int, Service>
, allowing you to create instances of Service
with an
int
parameter while automatically resolving other dependencies from the DI container. FactoryGenerator
provides multiple attribute variations
depending on the number of parameters your factory should accept.
Register generated factories in the DI container
The RegisterGeneratedFactories()
method automatically registers all factories created by the source
generator.
var serviceCollection = new ServiceCollection()
.RegisterGeneratedFactories();
Use the factory
using var serviceProvider = serviceCollection.BuildServiceProvider();
var factory = serviceProvider.GetRequiredService<IFactory<int, Service>>();
var service = factory.Create(1);
Full sample can be found here.
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 (>= 4.10.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.