-
Notifications
You must be signed in to change notification settings - Fork 3
Integration with IServiceCollection
Kirill edited this page Jun 6, 2020
·
17 revisions
For integration with Microsoft IServiceCollection, install package from NuGet:
Install-Package Velo.Extensions.DependencyInjection
Emitter is main class for routing your commands, queries or notification.
var serviceCollection = new ServiceCollection()
.AddEmitter()
.AddQueryBehaviour<QueryBehaviour>(ServiceLifetime.Scoped)
.AddQueryProcessor<QueryProcessor>() // also added pre/post processor
.AddCommandBehaviour<CommandBehaviour<Command>>() // default lifetime - singleton
.AddScoped(typeof(ICommandBehaviour<>), typeof(CommandBehaviour<>)) // or configure
.AddCommandProcessor<CommandProcessor>() // also added pre/post-processor
.AddNotificationProcessor<NotificationProcessor>()
var serviceCollection = new ServiceCollection()
.AddJsonConverter();
var serviceCollection = new ServiceCollection()
.AddLogging()
.AddDefaultConsoleLogWriter(LogLevel.Warning) // write warning logs to console output
.AddDefaultLogEnrichers() // log level, timestamp, sender
var serviceCollection = new ServiceCollection()
.AddMapper();
All service descriptors can be cloned to DependencyProvider.
DependencyProvider dependencyProvider = new ServiceCollection()
.AddEmitter()
.AddJsonConverter()
...
.BuildDependencyProvider();
You can build DependencyProvider as service to IServiceCollection.
IServiceProvider serviceProvider = new ServiceCollection()
.AddDependencyProvider(dependencies => dependencies
.AddEmitter())
.BuildServiceProvider();
var dependencyProvider = serviceProvider.GetRequiredService<DependencyProvider>();
var yourClass = dependencyProvider.Activate<YourClass>();
Now, you can use full functionality of DependencyProvider inside your IServiceProvider.