Reputation: 4211
I can't resolve ILogger instance in my console application...
I'm using Unity IoC and Serilog.
The registration is done like this:
container = new UnityContainer();
container.RegisterFactory<ILogger>(factory =>
{
ILogger log = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
return log;
}, new ContainerControlledLifetimeManager());
And then when I try this:
var logger = container.Resolve<ILogger>();
I get an exception:
Unity.ResolutionFailedException HResult=0x80131500 Message=Failed to select a constructor for Serilog.Core.Logger _____________________________________________________ Exception occurred while:
•resolving type: 'ILogger' mapped to 'Logger'
Source=Unity.Container StackTrace: at Unity.UnityContainer.ExecuteValidatingPlan(BuilderContext& context)
at Unity.UnityContainer.Unity.IUnityContainer.Resolve(Type type, String name, ResolverOverride[] overrides) at Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, ResolverOverride[] overrides) Inner Exception 1: InvalidOperationException: Failed to select a constructor for Serilog.Core.LoggerInner Exception 2: InvalidRegistrationException: Exception of type 'Unity.Exceptions.InvalidRegistrationException' was thrown.
I even tried registering it like this:
container = new UnityContainer();
ILogger log = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
container.RegisterInstance<ILogger>(log);
but with the same resulting exception thrown.
Please help
Upvotes: 0
Views: 562
Reputation: 4211
Found the problem... The problem was this line of code down the road, overriding my configuration:
container.RegisterTypes(AllClasses.FromAssembliesInBasePath(), WithMappings.FromMatchingInterface, WithName.Default);
Upvotes: 0