ServiceSharp 2.0.0

dotnet add package ServiceSharp --version 2.0.0
NuGet\Install-Package ServiceSharp -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ServiceSharp" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ServiceSharp --version 2.0.0
#r "nuget: ServiceSharp, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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 is Scoped.

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.

Version Downloads Last updated
2.0.0 183 7/24/2023
1.0.2 1,099 7/6/2018
1.0.1 1,001 7/6/2018
1.0.0 904 7/6/2018