Ich hatte eine Web-Lösung mit einem einzigen MVC-Projekt. Ich habe die Ninject-Bindung in diesem Projekt für die Konstruktorinjektion verwendet und es hat gut funktioniert. Jetzt fügte ich ein weiteres MVC-Projekt zu derselben Lösung hinzu und verwendete auch in diesem neuen Projekt die Konstruktionseinspritzung. Das neue Projekt wurde zum Start Up-Projekt. Aber wenn das Projekt ausgeführt wird, gibt es einen Fehler mit der Bezeichnung "Kein parameterloser Konstruktor für dieses Objekt definiert". Wenn ich einen parameterlosen Konstruktor im entsprechenden Controller hinzufüge, verschwindet dieser Fehler. Die Konstruktorbindung tritt jedoch nicht auf, da der parameterlose Konstruktor zu diesem Zeitpunkt aufgerufen wird. Ich habe sogar versucht, eine separate Bibliothek für die Auflösung von Abhängigkeiten zu erstellen und diese DLL im MVC-Projekt zu verwenden. Aber dies wird eine zirkuläre Abhängigkeit schaffen, daher war es nicht erfolgreich. Was sollte die Lösung für diese Situation sein?Dependency Injection Ausgabe von zwei MVC-Projekten in der gleichen Lösung
0
A
Antwort
0
ich dies in der Vergangenheit gelöst haben, indem MapperConfig.RegisterMaps();
in Global.asax.cs
und Definition der RegisterMaps()
Verfahren wie das folgende Aufruf:
public class MapperConfig
{
public static void RegisterMaps()
{
//get all projects' AutoMapper profiles using reflection
var assembliesToScan = System.AppDomain.CurrentDomain.GetAssemblies();
var allTypes = assembliesToScan.SelectMany(a => a.ExportedTypes).ToArray();
//depending on your solution, you may need allTypes to be defined as:
//var allTypes = assembliesToScan.Where(x => !x.IsDynamic).SelectMany(a => a.ExportedTypes).ToArray();
var profiles =
allTypes
.Where(t => typeof(Profile).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()))
.Where(t => !t.GetTypeInfo().IsAbstract);
//add each profile to our static AutoMapper
Mapper.Initialize(cfg =>
{
foreach (var profile in profiles)
{
cfg.AddProfile(profile);
}
});
}
}
dann in der Lösung in jedem Projekt können Sie separate AutoMapper Profile haben (was ich so, dass Ihre Auto-Mapp-Bindungen in der Ebene definiert sind, die sie verwendet, anstatt alle Zuordnungen in eine riesige Datei zu werfen) wie folgt:
public class AutoMapperServicesConfig : Profile
{
public AutoMapperServicesConfig()
{
CreateMap<Entity, EntityViewModel>();
}
public override string ProfileName
{
get { return this.GetType().ToString(); }
}
}
Verwandte Themen
- 1. Dependency Injection Ausgabe (bidirektionale Kommunikation)
- 2. Dependency Injection in Komponententests
- 3. Dependency Injection
- 4. Dependency-Injection
- 5. Dependency Injection in XPCOM
- 6. Dependency Injection in C++
- 7. Dependency Injection - Layered Application
- 8. Dependency Injection in Java
- 9. Dependency Injection Android
- 10. Dependency Injection in Symfony
- 11. Inherit Dependency Injection
- 12. Dependency Injection mit WebAPI
- 13. IMemoryCache Dependency Injection außerhalb der Controller
- 14. C# Dependency Injection mit 3 Projekten auf derselben Lösung
- 15. Javascript $ http Dependency Injection
- 16. einschränken Dependency Injection in-Modulabhängigkeiten
- 17. Microsoft Dependency Injection Bibliothek
- 18. Dependency Injection Approachh Symfony2
- 19. Scala: Dependency Injection
- 20. Unity Dependency Injection
- 21. Dependency Injection Einheit - Bedingte Resolving
- 22. Dependency Injection und ModelStateWrapper
- 23. Inheritance dependency injection simplification
- 24. Frühling Dependency Injection Szenario
- 25. Dependency Injection und Scope?
- 26. Dependency Injection Probleme
- 27. #botframework dependency injection
- 28. Singleton vs Dependency Injection
- 29. Dependency Injection in die Singleton
- 30. Laravel Dependency Injection/IOC