Does this not work in your case?
public class NamedInstanceTests
{
[Fact]
public void CanResolveInstances()
{
using ( IKernel kernel = new StandardKernel( new[]{new QuoteModule()} ) )
{
var instance = kernel.Get<IQuoteService>();
var namedInstance = kernel.Get<IQuoteService>( "car" );
Assert.NotNull( instance );
Assert.NotNull(namedInstance);
}
}
}
public class QuoteModule : NinjectModule
{
public override void Load()
{
Bind<IQuoteService>().To<VB6QuoteService>().Named("car");
Bind<IQuoteService>().To<VB6QuoteService>();
}
}
public interface IQuoteService
{
}
public class VB6QuoteService : IQuoteService
{
}
Or do you just want Ninject to return the default if the named resolution fails? I think you can get that functionality with an extension easily enough:
public static class IKernenExtension
{
public static T GetNamedOrDefault<T>(this IKernel kernel, string name) where T : class
{
return kernel.Get<T>(name) ?? kernel.Get<T>();
}
}
-Ian