Skip to content

Shuttle.Core.DependencyInjection

PM> Install-Package Shuttle.Core.DependencyInjection

Add components to IServiceCollection by convention:

c#
IServiceCollection services = new ServiceCollection();

services
	.FromAssembly(assembly)
	.Add();

The above would be the simplest case and adds all types using either a matching interface (with the same name as the class prefixed with I) or the first interface found. The default service lifetime is Singleton.

In order to filter the types add a Filter function:

c#
IServiceCollection services = new ServiceCollection();

services
	.FromAssembly(assembly)
	.Filter(type => type.Name.Equals("FilteredType", StringComparison.InvariantCultureIgnoreCase))
	.Add();

If a particular interface should be used for a selected type it may be specified as follows:

c#
IServiceCollection services = new ServiceCollection();

services
	.FromAssembly(assembly)
	.GetServiceType(type => typeof(ISomeInterface))
	.Add();

The service lifetime may also be specified:

c#
IServiceCollection services = new ServiceCollection();

services
	.FromAssembly(assembly)
	.GetServiceLifetime(type => ServiceLifetime.Transient)
	.Add();

Since this is a builder interface all the bits may be used in combination:

c#
IServiceCollection services = new ServiceCollection();

services
	.FromAssembly(assembly)
	.Filter(type => type.Name.Equals("FilteredType", StringComparison.InvariantCultureIgnoreCase))
	.GetServiceType(type => typeof(ISomeInterface))
	.GetServiceLifetime(type => ServiceLifetime.Transient)
	.Add();