What's the difference between registering using ICakeContainerRegistrar or IServiceCollection? #4948
|
I different methods of registering dependencies: namespace Cake.Core.Composition
{
/// <summary>
/// Represents a module responsible for
/// registering types and instances.
/// </summary>
public interface ICakeModule
{
/// <summary>
/// Performs custom registrations in the provided registrar.
/// </summary>
/// <param name="registrar">The container registrar.</param>
void Register(ICakeContainerRegistrar registrar);
}
}Which one is preferable? |
Replies: 1 comment
|
Modules are IoC agnostic, so works with Cake.Tool which uses Autofac as Cake predates MS IOC, Frosting, and SDK both use Microsoft.Extensions.DependencyInjection. An example of a module is Cake.BuildSystems.Module which enhances Cake's interaction with CI/CD providers. You could in Frosting use something like CakeHost()
// Register all modules from Cake.Buildsystems.Module
.UseModule<YourModule>()But internally for your code, I would use |
ICakeModuleis for extending Cake from external assemblies, i.e., replacing core functionality i.e. replacing a logger/filesystem/etc. implementation via a NuGet package; some docs about it herehttps://cakebuild.net/docs/extending/modules/
Modules are IoC agnostic, so works with Cake.Tool which uses Autofac as Cake predates MS IOC, Frosting, and SDK both use Microsoft.Extensions.DependencyInjection.
An example of a module is Cake.BuildSystems.Module which enhances Cake's interaction with CI/CD providers.
You could in Frosting use something like
But internally for your code, I would use