hope this fix your issue Take a look at my solution to this question. Perhaps you can use the same solution, with a Func factory delegate instead, and have ServiceImplX Keyed to the corresponding child type instead of using Named registrations.
Does Ninject have an equivalent of Autofac's TypedParameter or ResolvedParameter?
Does that help The issue is caused by the way of registration of DatabaseFactory<>. This type is registered as an interface IDatabaseFactory<>. But it is resolved as itself in lambda argument of method WithParameter() on registration of repositories:
.WithParameter(new ResolvedParameter((p, i) => p.Name == "databaseFactory",
// resolving type it self
// while it was registered as interface
(p, i) => i.Resolve<DatabaseFactory<AppDbContext>>()))