ServiceSharp 2.0.0
dotnet add package ServiceSharp --version 2.0.0
NuGet\Install-Package ServiceSharp -Version 2.0.0
<PackageReference Include="ServiceSharp" Version="2.0.0" />
paket add ServiceSharp --version 2.0.0
#r "nuget: ServiceSharp, 2.0.0"
// Install ServiceSharp as a Cake Addin #addin nuget:?package=ServiceSharp&version=2.0.0 // Install ServiceSharp as a Cake Tool #tool nuget:?package=ServiceSharp&version=2.0.0
ServiceSharp
ServiceSharp is a tiny utility for registering services in .NET Dependency Injection (DI) using [Attribute]
or Interface
:
Declare using Attributes
[Service(typeof(ITestAttr1))] // Explicit declaration
class ImplAttr1 : DefaultImplementation, ITestAttr1 { }
[Ignore]
interface IShouldIgnore {} // Ignore this interface unless explicitly declared
[Service] // Automatically register all implemented interfaces
class ImplAttr23 :
ITestAttr2, ITestAttr3,
IShouldIgnore // Ignored unless explicitly registered
{ }
[Service(typeof(ITestAttr4)), // Multiple explicit declarations
Service(typeof(ITestAttr5))] // Multiple explicit declarations
class ImplAttr456 : DefaultImplementation, ITestAttr4, ITestAttr5, ITestAttr6 { }
[Service(Lifetime = ServiceLifetime.Scoped)] // Lifetime can be specified
class ImplScoped : ITestAttrScoped { }
[Service(Lifetime = ServiceLifetime.Transient)]
class ImplTransient : ITestAttrTransient { }
[Service(Lifetime = ServiceLifetime.Singleton)]
class ImplSingleton : ITestAttrSingleton { }
Declare using Interfaces
class ImplInterface1 :
ITestInterface1,
ITestInterface2,
ITestInterface3, // This service is not registered
IService<ITestInterface1>, // Explicit declaration
IService<ITestInterface2> // Explicit declaration
{ }
[Ignore]
interface IShouldIgnore {} // Ignore this interface unless explicitly declared
// Use Interface declaration for all implemented interfaces
class ImplInterface23 :
IService, // Automatically register all implemented interfaces
ITestInterface2,
ITestInterface3,
IShouldIgnore // Ignored unless explicitly registered
{ }
[Ignore] // Do not register this class though it implements IService interface
class ImplInterface3 :
ITestInterface3
IService
{ }
Note
The lifetime of the service cannot be specified using interface declaration. It uses the value from options instead. The default value isScoped
.
Installation
You can install from Nuget Package:
Install-Package ServiceSharp
Note
The old package for ASP.NET Core is now deprecated. You don't need it anymore.
Usage
Use AddServices
to register all the declared services in the Assembly:
services.AddServices();
You can also optionally specify a few options:
services.AddServices(options => {
// Change scanning Assembly,
// the default is Assembly.GetCallingAssembly() which should be your own code
options.Assembly = Assembly.GetExecutingAssembly();
// Add more assemblies to be scanned in case you have multiple assemblies
options.AdditionalAssemblies.Add(GetMyAssembly());
// Set the default Lifetime for the services if not specified by Attribute declaration
// The default value is Scoped
options.Lifetime = ServiceLifetime.Scoped;
// You can also make and specify your own scanner
options.TypeScanner = new MyTypeScanner();
});
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 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. |
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ServiceSharp:
Package | Downloads |
---|---|
ServiceSharp.AspNetCore
A tiny utility for Repository-Service pattern for ASP.NET Core |
GitHub repositories
This package is not used by any popular GitHub repositories.