There are several appoaches to resolve such situations
Named binding
Simplest, just provide name for dependency:
kernel
.Bind(typeof(IRepository<>))
.To(typeof(WebApiEFRepository<>))
// named binding
.Named("WebApiEFRepository");
And resolve it using this name. Name cound be found in configuration: web.config
for example:
var webApiEFRepository = kernel.Get<IRepository<Entity>>("WebApiEFRepository");
Contextual binding
Find from injection context what type to bind. In your example based on target namespace
kernel
.Bind(typeof(IRepository<>))
.To(typeof(WebDbRepository<>))
// using thins binding when injected into special namespace
.When(request => request.Target.Type.Namespace.StartsWith("Application.Web"));
Get dependency from kernel:
// WebDbRepository<> will be injected
var serice = kernel.Get<Application.Web.Service>();