Starting with NServiceBus version 7, the dependency injection container adapter packages are no longer required. NServiceBus directly supports the Microsoft.Extensions.DependencyInjection
model and third party containers can be integrated using the NServiceBus.Extensions.DependencyInjection package or via the .NET Generic Host.
In NServiceBus version 8, NServiceBus will no longer provide adapters for external dependency injection containers.
Visit the dependency injection upgrade guide for further information.
NServiceBus can be configured to use Unity for dependency injection.
Default usage
busConfiguration.UseContainer<UnityBuilder>();
Using an existing container
var container = new UnityContainer();
container.RegisterInstance(new MyService());
busConfiguration.UseContainer<UnityBuilder>(
customizations: customizations =>
{
customizations.UseExistingContainer(container);
});
Breaking changes in Unity
Breaking changes in Unity will be handled as follows:
- Changes that require a change to the
NServiceBus.
API (e.g. changes toUnity IUnityContainer
) will be released in a new major version ofNServiceBus.
.Unity - Changes that do not require a change to the
NServiceBus.
API will be released as a patch release to the latest minor version ofUnity NServiceBus.
.Unity - If Unity releases a new major version, it will be supported in a new minor release of
NServiceBus.
.Unity
DependencyLifecycle mapping
DependencyLifecycle
maps to Unity lifetime managers as follows:
DependencyLifecycle | Unity Equivalent |
---|---|
InstancePerCall | TransientLifetimeManager |
InstancePerUnitOfWork | HierarchicalLifetimeManager |
SingleInstance | ContainerControlledLifetimeManager |
Property Injection
This dependency injection container adapter automatically enables property injection for known types. Use the Func
overload of .
to get full control over the injected properties if needed.