Ich bin neu in IoC/DI-Frameworks. Der erste, den ich versuche, ist der Ninject-Rahmen. Es scheint einfach, aber ich kann meine Konsolenanwendung nicht ausführen. Ich bekomme immer eine ActivationException mit:Warum schlägt meine Ninject DI-Anwendung mit einer ActivationException fehl?
Mein Code ist sehr einfach. Hier ist meine Programmdatei ...
class Program
{
static void Main(string[] args)
{
IKernel k = new StandardKernel(new DateBindingModule());
MainWindow mw = k.Get<MainWindow>();
mw.Show();
Console.ReadLine();
}
}
Hier ist mein ninject Bindungsmodul ...
public class DateBindingModule : StandardModule
{
public override void Load()
{
Bind<MainWindow>().To<FutureRealisticDateManager>();
}
}
Hier ist die Klasse, die die injizierten Klasse erhält ...
class MainWindow
{
private IRealisticDateManager _d;
[Inject]
public MainWindow(IRealisticDateManager dateManager)
{
_d = dateManager;
}
public void Show()
{
Console.WriteLine("*** MainWindow [" + _d.GetRealisticDate().ToString() + "] ");
}
}
Und hier ist die tatsächliche Klasse, die eingespritzt wird ...
public class FutureRealisticDateManager : TestNinject.IRealisticDateManager
{
public DateTime GetRealisticDate()
{
return DateTime.Now.AddDays(15);
}
}
Und schließlich die einfache Schnittstelle, die die injizierte Klasse implementieren sollte ...
public interface IRealisticDateManager
{
DateTime GetRealisticDate();
}
Kann jemand sehen, was ich falsch mache?
Ah, das macht Sinn. Danke Mokosh! – willem