DependencyInjection.ServiceRegistrator
1.0.0
dotnet add package DependencyInjection.ServiceRegistrator --version 1.0.0
NuGet\Install-Package DependencyInjection.ServiceRegistrator -Version 1.0.0
<PackageReference Include="DependencyInjection.ServiceRegistrator" Version="1.0.0" />
paket add DependencyInjection.ServiceRegistrator --version 1.0.0
#r "nuget: DependencyInjection.ServiceRegistrator, 1.0.0"
// Install DependencyInjection.ServiceRegistrator as a Cake Addin #addin nuget:?package=DependencyInjection.ServiceRegistrator&version=1.0.0 // Install DependencyInjection.ServiceRegistrator as a Cake Tool #tool nuget:?package=DependencyInjection.ServiceRegistrator&version=1.0.0
DependencyInjection.ServiceRegistrator
Super tiny library for registrating your services and factory instance types by using only attributes
How to setup services
If you want to apply interface with implementation (service) type, you can try this approach.
public interface IDataAccess
{
string GetData();
}
[ServiceRegistration(typeof(IDataAccess), typeof(DataAccess))]
public class DataAccess : IDataAccess
{
public string GetData()
{
return "Data sample";
}
}
Otherwise if you dont need a corresponding interface, you can just skip it.
[ServiceRegistration(typeof(DataAccess))]
public class DataAccess : IDataAccess
{
public string GetData()
{
return "Data sample";
}
}
How to setup factories
[ServiceRegistration(typeof(TesterClass), Type = ServiceType.Factory)]
public class TesterClass
{
public TesterClass()
{
TestString = Guid.NewGuid().ToString();
}
public string TestString { get; }
}
How to register the services
In this example i will use IHostBuilder
from the Microsoft.Extensions.Hosting
package, but you can just use IServiceCollection
instance, example lower.
var hostBuilder = Host.CreateDefaultBuilder();
ServiceRegistrator.Register(hostBuilder);
var host = hostBuilder.Build();
var serviceCollection = new ServiceCollection();
ServiceRegistrator.Register(serviceCollection);
var serviceProvider = serviceCollection.BuildServiceProvider();
ServiceRegistrator
is a public static class that obtains every type of the calling assembly, then it takes only types that have ServiceRegistration
. This is being implemented using reflection.
How to use factories
var factory = services.GetRequiredService<IFactory<TesterClass>>();
// creating 5 new instances using factory pattern
for (int i = 0; i < 5; i++)
Console.WriteLine(factory.Create().TestString);
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. |
.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 is compatible. |
.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.DependencyInjection (>= 8.0.0)
- Microsoft.Extensions.Hosting (>= 8.0.0)
-
.NETStandard 2.1
- Microsoft.Extensions.DependencyInjection (>= 8.0.0)
- Microsoft.Extensions.Hosting (>= 8.0.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 | 132 | 4/22/2024 |