我是 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!” 到带有默认构造函数的控制台。