Ich habe eine Web-App mit zwei verschiedenen Controllern und ich verwende Konfigurationsdateien als Eingabe für die Controller. Früher habe ich nur eine einzige Konfigurationsdatei verwendet und konnte diese an den Kernel binden, und alles würde gut funktionieren. Jetzt werde ich jedoch zwei separate Konfigurationsdateien verwenden und Ninject benötigen, um zu verstehen, welches zu verwenden ist. Hier ist ein Beispiel, wie ich dachte, ich würde tun. Kommentierte weg ist auch, was ich getan habe, um die Konfiguration vorher zu binden, als ich nur einen hatte.Ninject binden zwei verschiedene Parameter des gleichen Typs in Global.asax
var kernel = NinjectWebApi.Kernel;
//get base dependency instances from the container
var configurationClient = kernel.Get<IConfigurationClient>();
//initialise local dependencies
var config1 = configurationClient.Get(new GetConfigurationByKeyRequest("Config1"));
var config2 = configurationClient.Get(new GetConfigurationByKeyRequest("Config2"));
//bind local dependencies
//This is what I did when I had just one config
//kernel.Bind<IConfiguration>().ToMethod(c => config1.Configuration);
kernel.Bind<IMy1Controller>().To<My1Controller>()
.WithConstructorArgument("config1", config1.Configuration)
.WithConstructorArgument("config2", config2.Configuration);
kernel.Bind<IMy2Controller>().To<My2Controller>()
.WithConstructorArgument("config2", config2.Configuration);
//Set the dependency resolver to use ninject
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
Was ist der Zweck des „WithConstructorArgument“ wenn ich es nicht eine Eingabe angeben können zu?