2
IoC/DI 프레임 워크를 처음 사용했습니다. 첫 번째 시도는 Ninject 프레임 워크입니다. 그것은 간단하지만 콘솔 응용 프로그램을 실행할 수 없습니다. 계속 ActivationException이 표시됩니다.Ninject DI 응용 프로그램이 ActivationException으로 실패하는 이유는 무엇입니까?
"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();
}
}
내 Ninject에 결합되는 모듈 ... 여기
public class DateBindingModule : StandardModule
{
public override void Load()
{
Bind<MainWindow>().To<FutureRealisticDateManager>();
}
}
가 주입 클래스를 수신 클래스는 ...이다
class MainWindow
{
private IRealisticDateManager _d;
[Inject]
public MainWindow(IRealisticDateManager dateManager)
{
_d = dateManager;
}
public void Show()
{
Console.WriteLine("*** MainWindow [" + _d.GetRealisticDate().ToString() + "] ");
}
}
그리고 여기에 실제 수업이 주입됩니다 ...
public class FutureRealisticDateManager : TestNinject.IRealisticDateManager
{
public DateTime GetRealisticDate()
{
return DateTime.Now.AddDays(15);
}
}
그리고 주입 된 클래스가 구현해야 마지막으로 간단한 인터페이스 ...
public interface IRealisticDateManager
{
DateTime GetRealisticDate();
}
아무도 내가 뭘 잘못 볼 수 있을까요? 당신의 바인딩 때문에 실패
아, 그건 완벽합니다. Mokosh에게 감사드립니다! – willem