TravelGate.Extensions.DependencyInjection.AutoWire
2.0.0
dotnet add package TravelGate.Extensions.DependencyInjection.AutoWire --version 2.0.0
NuGet\Install-Package TravelGate.Extensions.DependencyInjection.AutoWire -Version 2.0.0
<PackageReference Include="TravelGate.Extensions.DependencyInjection.AutoWire" Version="2.0.0" />
<PackageVersion Include="TravelGate.Extensions.DependencyInjection.AutoWire" Version="2.0.0" />
<PackageReference Include="TravelGate.Extensions.DependencyInjection.AutoWire" />
paket add TravelGate.Extensions.DependencyInjection.AutoWire --version 2.0.0
#r "nuget: TravelGate.Extensions.DependencyInjection.AutoWire, 2.0.0"
#:package TravelGate.Extensions.DependencyInjection.AutoWire@2.0.0
#addin nuget:?package=TravelGate.Extensions.DependencyInjection.AutoWire&version=2.0.0
#tool nuget:?package=TravelGate.Extensions.DependencyInjection.AutoWire&version=2.0.0
AutoWire
Library to auto register dependencies and to auto bind option classes for Microsoft.Extensions.DependencyInjection
Getting Started
Just call AutoWire on your service collection, like:
serviceCollection.AutoWire(config);
Where config is of type IConfiguration.
Usually that's all you need. AutoWire will auto register types as services and options if the following applies:
For services
- They are classes, including generics with open type (
SomeType<>). - They belong to the entry assembly as obtained by
Assembly.GetEntryAsembly(). - They are not marked with or inherit
[IgnoreAutoWire]attribute. - They are not abstract or nested.
- They don't end with "Options".
For options
- They are classes.
- They have a parameter-less constructor.
- Their name match a section from the provided
IConfigurationobject.
Additional features
Use IncludePrefixed option
Using this option only classes under to the IEnumerable<string> namespace prefixes are added.
var sc = new ServiceCollection();
sc.AutoWire(config, options => options.IncludePrefixed = new[] { typeof(SomeClass).Namespace });
For example, assuming that someClass belongs to ProjectName.Folder, all classes located in the
same namespace will be registered.
Use RegisterByAttribute option
var sc = new ServiceCollection();
sc.AutoWire(config, options => options.RegisterByAttribute = true);
Using this option only classes that are marked with or inherit [AutoWire] are registered. For example:
[AutoWire]
public class SomeClass {}
NOTE: if both IncludePrefixed and RegisterByAttribute, they are both applied and in this order.
Ignoring classes
If you wish to ignore a class or derived classes from a base class or interface,
mark the class, base class or interface with [IgnoreAutoWire], for example:
[IgnoreAutoWire]
public class SomeClass {}
Contribute
Yes please!
| 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.Extensions.Configuration.Abstractions (>= 2.1.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.1.1)
- Microsoft.Extensions.Hosting (>= 2.1.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 2.1.1)
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 |
|---|---|---|
| 2.0.0 | 1,042 | 2/26/2020 |