Dependency injection 为什么我的Ninject DI应用程序会因ActivationException而失败?
我不熟悉IoC/DI框架。我正在尝试的第一个是Ninject框架。这看起来很简单,但我无法让我的控制台应用程序运行。我一直收到一个ActivationException声明:Dependency injection 为什么我的Ninject DI应用程序会因ActivationException而失败?,dependency-injection,inversion-of-control,ninject,Dependency Injection,Inversion Of Control,Ninject,我不熟悉IoC/DI框架。我正在尝试的第一个是Ninject框架。这看起来很简单,但我无法让我的控制台应用程序运行。我一直收到一个ActivationException声明: "Error activating MainWindow: the StandardProvider returned an instance of type FutureRealisticDateManager, which is not compatible with the requested service. Us
"Error activating MainWindow: the StandardProvider returned an instance of type FutureRealisticDateManager, which is not compatible with the requested service.
Using default binding from MainWindow to FutureRealisticDateManager (via StandardProvider)
declared by DateBindingModule.Load()
Activation path:
1) active request for MainWindow
from Program.Main()
using default binding from MainWindow to FutureRealisticDateManager (via StandardProvider)
declared by DateBindingModule.Load()"
我的代码非常简单。这是我的程序文件
class Program
{
static void Main(string[] args)
{
IKernel k = new StandardKernel(new DateBindingModule());
MainWindow mw = k.Get<MainWindow>();
mw.Show();
Console.ReadLine();
}
}
这是正在注入的实际类
public class FutureRealisticDateManager : TestNinject.IRealisticDateManager
{
public DateTime GetRealisticDate()
{
return DateTime.Now.AddDays(15);
}
}
最后是注入类应该实现的简单接口
public interface IRealisticDateManager
{
DateTime GetRealisticDate();
}
有人知道我做错了什么吗?它失败了,因为您的绑定不正确:
Bind<MainWindow>().To<FutureRealisticDateManager>();
这告诉Ninject在请求IRealisicDateManager
时返回FutureRealisicDateManager
这样,当您调用
k.Get()
内核时,就会将FutureRealisticDateManager
注入构造函数。啊,这很有意义。谢谢Mokosh!
public interface IRealisticDateManager
{
DateTime GetRealisticDate();
}
Bind<MainWindow>().To<FutureRealisticDateManager>();
Bind<IRealisticDateManager>().To<FutureRealisticDateManager>();