私は IOC コンテナーを初めて使用し、Ninject を学習しています。Github から新たにダウンロードしたバージョン 2.0 を使用しています。
デフォルトのコンストラクターも存在する場合、コンストラクターに文字列パラメーターを設定しようとしています。私は Ninject のソースを調べてきましたが、不足しているものを簡単に特定するために使用されているパターンについて十分に理解していません。
これが私のテストコンソールアプリです:
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);
}
このコードはコンソールに "間違ったメッセージ :(" を出力します。TestClass のデフォルト コンストラクターを削除すると、"Hello World!" が表示されます。何が欠けているのでしょうか?
明確にするために、クラスに「Hello World!」を出力させたいと考えています。デフォルトのコンストラクターが存在するコンソールに。