RegistrationByAttributes 1.0.0.4
dotnet add package RegistrationByAttributes --version 1.0.0.4
NuGet\Install-Package RegistrationByAttributes -Version 1.0.0.4
<PackageReference Include="RegistrationByAttributes" Version="1.0.0.4" />
<PackageVersion Include="RegistrationByAttributes" Version="1.0.0.4" />
<PackageReference Include="RegistrationByAttributes" />
paket add RegistrationByAttributes --version 1.0.0.4
#r "nuget: RegistrationByAttributes, 1.0.0.4"
#:package RegistrationByAttributes@1.0.0.4
#addin nuget:?package=RegistrationByAttributes&version=1.0.0.4
#tool nuget:?package=RegistrationByAttributes&version=1.0.0.4
Automatic registration by attributes for .net
Decided to make a separate project. Added registration of multiple implementations, or specific implementations with LifetimeManagement management (for Unity).
The fun is that this approach covers all work with container.
Also, if you need to register types from any other assembly with registrations with attributes — simply call RegisterFromAnotherAssembly.
If you want to use different implementations depend on build type - use preprocessor directives.
No more problems with importing types from another assemblies and so on. By design 😃.
Just add attributes.
How to use?
Add a TypeRegistrationAttribute to the base entity whose implementations you want to register in the container.
Add DerivedTypeRegistrationAttribute to the implementation to override LifetimeManagement. If you want named instance - add name in DerivedTypeRegistrationAttribute.
Specify LifetimeManagementType.
Call (YourContainer).RegisterWithAttributes().
Call (YourContainer).RegisterWithAttributes(AnotherAssembly) to register types with registration with attributes from another assembly.
How to add your container?
Made your own CommonRegistration.
override 3 methods - registerInContainer, registerManyInContainer.
Write your own mapping for LifetimeManagementType.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 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. |
-
net7.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.8)
- Unity (>= 5.11.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.