Starting with NServiceBus version 7, the dependency injection container adapter packages are no longer required. NServiceBus directly supports the Microsoft. 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.
As of NServiceBus version 10.2, hosting with Microsoft.Extensions.Hosting is built in, which includes Microsoft..
Visit the dependency injection upgrade guide for further information.
NServiceBus can be configured to use StructureMap for dependency injection.
StructureMap has been sunset and the NServiceBus. repository is archived. The StructureMap maintainers recommend Lamar instead. To use StructureMap with NServiceBus version 8 and later, see the StructureMap section of the upgrade guide.
Default usage
endpointConfiguration.UseContainer<StructureMapBuilder>();
Using an existing container
var container = new Container(
action: expression =>
{
expression.For<MyService>()
.Use(new MyService());
});
endpointConfiguration.UseContainer<StructureMapBuilder>(
customizations: customizations =>
{
customizations.ExistingContainer(container);
});
DependencyLifecycle Mapping
DependencyLifecycle maps to StructureMap lifecycles as follows:
DependencyLifecycle | StructureMap lifecycle |
|---|---|
| InstancePerCall | AlwaysUnique |
| InstancePerUnitOfWork | ContainerScoped |
| SingleInstance | Singleton |
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.