Ich bin neu in IOC Container und lernen Ninject. Ich benutze Version 2.0, frisch von Github heruntergeladen.Ninject 2.0 Constructor-Parameter - Wie wird festgelegt, wenn der Standardkonstruktor ebenfalls vorhanden ist?
Ich versuche, einen Zeichenfolgenparameter für einen Konstruktor festzulegen, wenn ein Standardkonstruktor ebenfalls vorhanden ist. Ich bin durch die Ninject-Quelle gegangen, aber ich kenne mich mit den Mustern nicht aus, mit denen ich leicht herausfinden kann, was ich vermisse.
Hier ist meine Testkonsolenanwendung. „Hallo Welt!“.
static void Main(string[] args)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITestClass>().To<TestClass>()
.WithConstructorArgument("message", "Hello World!");
var testClass = kernel.Get<ITestClass>();
// Does not work either:
//var testClass = kernel.Get<ITestClass>(new ConstructorArgument("message", "Hello World!"));
testClass.DisplayMessage();
Console.ReadLine();
}
}
public interface ITestClass
{
void DisplayMessage();
}
public class TestClass : ITestClass
{
public TestClass()
{
this.message = "Wrong message :(";
}
private string message;
public TestClass(string message)
{
this.message = message;
}
public void DisplayMessage()
{
Console.WriteLine(this.message);
}
Die Code druckt „Falsche Meldung :(“ auf der Konsole Wenn ich den Standard-Konstruktor in Testclass entferne ich bekommen Was bin ich fehlt hier
um zu klären:. ich die Klasse will „Hallo Welt!“ zu drucken, um die Konsole mit dem Standardkonstruktor vorhanden
Vielen Dank Ian! – Stuart
Ich habe gerade heute einen Patch früher gemacht, der dieses Problem auch ohne das [Inject] -Attribut hätte beheben sollen. Parameter werden jetzt bewertet, wenn ausgewertet wird, welche .ctor-Datei verwendet wird. –