Ich habe eine Schnittstelle IGenericRepository<TEntity> where TEntity : IEntity
und eine Implementierung GenericRepository<TEntity> where TEntity : Entity
.
Ich versuche, eine bestimmte IGenericRepository<Section>
mit StructureMap in eine Klasse zu injizieren:
Aber wenn ich versuche, ObjectFactory.GetInstance<IGenericRepository<Section>>();
zu verwenden, bekomme ich:
StructureMap-Ausnahmecode: 202 Keine Standardinstanz für PluginFamily System.Data.Common.DbConnection
definiertIrgendwelche Ideen, warum das ist oder was ich falsch mache?
Vielen Dank im Voraus,
Simon
Wie ist Ihr Konstruktor für GenericRepository<>
?
Es oder eine seiner Abhängigkeiten erwartet eine DbConnection
, die SM nicht erstellen kann.
Ich hatte genau dasselbe Problem:
Habe ein generisches Repository:
%Vor%und eine konkrete Umsetzung:
%Vor%was ich zur Laufzeit in den Konstruktor der Controller injizieren wollte, wo die TEntity das für diesen Controller relevante Modell wäre:
%Vor%Der Controller würde dann das Repository "_repo" verwenden, um das Modell zu aktualisieren:
%Vor%simonjreid der Antwort für mich: musste den ObjectContext zur StructureMap-Konfiguration hinzufügen (der Zweck des Repositorys war es, den von EntityFramework generierten Kontext, den ich MyContextWrapper nannte, zu schließen. Deshalb, weil das Repository von MyContextWrapper abhing hängt von ObjectContext ab):
%Vor%Allerdings bekomme ich jetzt die StructureMap Runtime Exception:
StructureMap-Ausnahmecode: 205 Fehlende angeforderte Instanzeigenschaft "connectionString"
Nach dem Lesen eines Posts von Jeremy Miller Ein sanfter Quickstart (ganz unten) habe ich festgestellt, dass Sie was definieren können Argumente, die in den Konstruktor Ihrer registrierten Typen übergeben werden, dh ich musste die Verbindungszeichenfolge an den Konstruktor der MyCustomContext-Klasse übergeben (hier ist die vollständige Auflistung, wie ich die ObjectFactory initialisiere:
) %Vor%Und BOOM! Jetzt kann mein Controller zur Laufzeit von StructureMap instanziiert werden und eine Instanz von IRepository ... happy days injizieren.
Tags und Links c# generics dependency-injection structuremap