I have IDependency dependency, that is used in a huge amount of services.
There are two implementations of this dependency: DefaultDependency and CustomDependency.
DefaultDependency in most of services. CustomDependency should be used in small amount of services.
Code example that is not working because of several factories:
var container = new Container();
container.Register<IDependency, DefaultDependency>(Reuse.ScopedOrSingleton);
container.Register<IService, Service>(Reuse.ScopedOrSingleton, setup: Setup.With(openResolutionScope: true));
container.Register<IDependency, CustomDependency>(Reuse.ScopedTo<IService>());
var service = (Service)container.Resolve<IService>(); // Throws Error.ExpectedSingleDefaultFactory
Is it possible to increase priority of scoped to factory for CustomDependency or something like that? Or the only way to achieve it is to register DefaultDependency as ScopedTo to all services that should use it?
Dotnet fiddle: https://dotnetfiddle.net/wPA19s
UPDATE:
I was able to make it work with FactoryMethod, but maybe there is some cleaner way:
container.Register<CustomDependency>(Reuse.ScopedOrSingleton);
container.Register<IService, Service>(made: Made.Of(
factoryMethod: r => FactoryMethod.Of(typeof(Service).GetConstructorOrNull(args: new[] { typeof(IDependency) })),
parameters: Parameters.Of.Type<IDependency>(requiredServiceType: typeof(CustomDependency))));
Dotnet fiddle with working resolving of CustomDependency: https://dotnetfiddle.net/Znps9L