Rolf b: Kein parameterloser Konstruktor

Beitrag lesen

Du müsstest vielleicht noch etwas mehr über den Kontext erzählen, in dem Du unterwegs bist. ASP.NET MVC ist eine Annahme (basierend auf MyController), muss es aber nicht sein.

Grundsätzlich ist es so, dass C# keinen parameterlosen Konstruktor mehr generiert, sobald Du einen eigenen Konstruktor schreibst. Deswegen fehlt er jetzt und das Framework regt sich drüber auf, weil es auf DI erstmal nicht ausgelegt ist und nach einem parameterlosen .ctor sucht.

Um beispielsweise ASP.NET MVC Unity-fähig zu machen, brauchst Du eine entsprechende Unterstützung im Framework. Wie die bei MVC und Unity genau aussieht, hängt von den verwendeten MVC- und Unity-Versionen ab und davon, ob Du .net Classic oder .net Core verwendest. Onkel Bing Googlesby weiß dazu eine Menge Antworten; es gibt fertige Lösungen für viele Szenarien, die Du nur als nuget-Paket reinziehen musst (oder bower oder foo packet manager 4.8.15 oder oceanic packager 16.23™).

ICH mach das allerdings anders, wenn ich mal in MVC oder Web API unterwegs bin. Ich verwende Controller extrem dünnschichtig und ohne DI. In den Actions erzeuge ich Instanzen von Worker-Klassen, die die Aufgabe der Action durchführen und im Prinzip nichts vom verwendeten Framework wissen. Wenn ich Framework-Informationen in die Action-Worker hineingeben muss, dann über eine (injizierte) Adapterklasse. Auf diese Weise ist mein Worker komplett von MVC entkoppelt und ich kann ihn prima unittesten, ohne irgendwas von ASP.NET faken zu müssen.

D.h. meine Controller routen lediglich die Aufrufe an die Worker weiter, sonst nichts. Vermutlich könnte ich mir dafür T4-Templates schreiben, wenn ich denn den Nerv hätte, mich in T4 einzuarbeiten.

Rolf