Basilisque.DependencyInjection
1.0.0-RC13
dotnet add package Basilisque.DependencyInjection --version 1.0.0-RC13
NuGet\Install-Package Basilisque.DependencyInjection -Version 1.0.0-RC13
<PackageReference Include="Basilisque.DependencyInjection" Version="1.0.0-RC13" />
paket add Basilisque.DependencyInjection --version 1.0.0-RC13
#r "nuget: Basilisque.DependencyInjection, 1.0.0-RC13"
// Install Basilisque.DependencyInjection as a Cake Addin #addin nuget:?package=Basilisque.DependencyInjection&version=1.0.0-RC13&prerelease // Install Basilisque.DependencyInjection as a Cake Tool #tool nuget:?package=Basilisque.DependencyInjection&version=1.0.0-RC13&prerelease
Basilisque - Dependency Injection
Overview
This project provides functionality to easily register all services of the target project at the IServiceCollection.
Description
This project contains functionality for registering services at the IServiceCollection.
It also contains a source generator, that generates code to registers all services of the target project.
The services simply have to be marked with an attribute.
The attribute can also be attached to base classes or interfaces. This means that all implementations of the base class or interface will be automatically registered.
The generated code is marked as partial. This means it can be easily extended with custom logic.
Getting Started
Install the NuGet package Basilisque.DependencyInjection.
Installing the package will also install the package Basilisque.DependencyInjection.CodeAnalysis as a child dependency. This contains the source generator.
Now you're ready to register your first service.
Features
Generates code that registers all marked services of a project.
This means anyone who uses your project can call a single method to register all of your provided services.The generated code automatically calls the registration methods of all dependencies that also use Basilisque.DependencyInjection.
This means if you use Basilisque.DependencyInjection in multiple related projects, you have to call the registration method only once and all dependencies will be registered, too.Configuration of the registration
- Lifetime (Transient, Scoped, Singleton)
- Type as that the service will be registered can be specified
- ImplementsITypeName
When the service implements an interface with the same name but starting with an I, it will be registered as this interface (e.g. 'PersonService' as 'IPersonService').
Marker attributes on interfaces and base classes.
This means for example, that you can register all implementations of an interface with the same configuration and you don't have to worry about registration whenever you create a new implementation of it.Custom marker attributes
You can create custom attributes with predefined configuration by inheriting from the provided attributes. Whenever you use your attribute you can be sure, that the same configuraiton will be used.Multiple registrations of the same service
A service can have multiple registrations with different configurations.
Examples
All implementations of this interface will be registered as singleton:
[RegisterServiceSingleton()]
public interface IMyInterface
{
}
You can get the same result writing it like this:
[RegisterService(RegistrationScope.Singleton)]
public interface IMyInterface
{
}
For details see the wiki.
License
The Basilisque framework (including this repository) is licensed under the Apache License, Version 2.0.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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. |
.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
-
net6.0
-
net7.0
-
net8.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 |
---|---|---|
1.0.0-RC13 | 59 | 10/25/2024 |