Ich implementiere das dynamische Laden und Registrieren meiner Assemblys in Unity IoC.
Gegeben diese Klassen:
%Vor%Und diese Konfiguration:
%Vor%Der Code:
%Vor%Wirft:
Eine erste Chance auf den Typ 'Microsoft.Practices.Unity.ResolutionFailedException' ist in aufgetreten Microsoft.Practices.Unity.dll
Zusätzliche Information: Auflösung der Abhängigkeit fehlgeschlagen, type = "MyAsm.IC", name="(keine)".
Ausnahme aufgetreten während: während der Auflösung.
Ausnahme ist: InvalidOperationException - Der Typ IC hat keine zugänglicher Konstruktor.
Zum Zeitpunkt der Ausnahme war der Container:
MyAsm.IC, (keine)
Der gesamte obige Code wird in derselben Assembly MyAsm ausgeführt. Beim Analysieren des Containers im Debug-Modus listet die Registrations
-Eigenschaft die scheinbar richtige Sammlung von Zuordnungen von A
, B
und C
zu ihren jeweiligen Schnittstellen sowie zu sich selbst auf.
Irgendwelche Ideen?
LÖSUNG
Nach Tylers Antwort habe ich gewechselt:
%Vor%bis
%Vor% was das Problem gelöst hat. Diese beiden Methoden in Assembly
haben dasselbe Argument und denselben Rückgabetyp, und variieren nur ein bisschen im Verhalten . Pures Übel .
Ich konnte den Fehler reproduzieren, den Sie bekommen.
Sie laden also die Assembly aus einer Datei Assembly.LoadFile(@"path\MyAsm.dll");
und lösen dann einen hart referenzierten Typ container.Resolve(typeof(IC));
auf. Ich glaube, dass diese Typen von zwei verschiedenen kompilierten Binärdateien kommen. Die Typen aus der Binärdatei in @ "Pfad \ MyAsm.dll" werden in den Container geladen, aber Sie versuchen, den Typ der Binärdatei aus dem Bin-Verzeichnis des Anwendungspfads aufzulösen (Die referenzierte Assembly CopyLocal ist auf True gesetzt).
Entweder müssen Sie die Typen aus der referenzierten Binärdatei registrieren, die bereits in der Anwendungsdomäne geladen ist, oder Sie müssen den Typ aus der geladenen Binärdatei mithilfe der Reflektion auflösen, um den Typ zu finden.
%Vor%- oder -
%Vor%Wie ich es gelöst habe, indem ich die Schnittstelle und die Repositories auf unity.config
abgebildet habe %Vor%Tags und Links c# ioc-container unity-container