Skip to content
Ivan edited this page Sep 2, 2020 · 13 revisions

Register many services from one library

var dependencyProvider = new DependencyCollection()
     .AddLogger()        // log service
     .AddSettings()      // configuration from files and command line
     .AddMapper()        // simple mapper for map property to property
     .AddEmitter()       // mediator or CQRS pattern implementation
     .AddJson()          // simple json de/serializer
     .BuildProvider()    // dependency injection

Use popular services

Dependency injection

var dependencies = new DependencyCollection()
     .AddSingleton<IFooRepository, FooRepository>()
     .AddScoped<BooService>();

Read more about dependency injection here.

Structured Logging

var logger = _dependencyProvider.GetService<ILogger<MyClass>>(); // logger for a sender
logger.Warning("My warning message with {arg1}, {arg2} and structure logging", arg1, arg2);

Read more about logging here.

Resolve some settings as an object

var mySettings = dependencyProvider.Get<MySettings>(); // from your own file

Read more about settings here.

Simple mapping

var mapper = dependencyProvider.Get<IMapper<Boo>>(); // as singleton in the runtime
var boo = mapper.Map(foo);

Mediator (or CQRS)

var mediator = dependencyProvider.Get<IEmitter>();
var answer = await mediator.Ask<Foo>(query);  // ask question and receive answer
await mediator.Execute(command);              // execute command 
await mediator.Publish(notification);         // publish notification

Read more about CQRS here.

Json serializer and deserializer

var jsonConverter = dependencyProvider.Get<JConverter>();
var deserialized = jsonConverter.Deserialize<Foo>("{ ... }");     // deserialization
var serialized = jsonConverter.Serialize(deserialized);           // serialization