2017-08-04 2 views
1

Warum kann ich das nicht tun? Wobei obj-Wert ein gültiger Typ ist.Registrieren Sie einen Typ zur Laufzeit mit Unity Container

Type type = obj.Value.GetType(); 
this.unityContainer.RegisterType<type>(); 

ODER

this.unityContainer.RegisterType(obj.Value); 

Wenn ich dies tun kann ... wo obj Wert vom gleichen Typ, aber zum Zeitpunkt der Kompilierung bekannt sein würde.

this.unityContainer.RegisterType<object, actualType>("Name"); 

Das Ende Ziel von mir ist in der Lage sein, mehrere verschiedene Typen zur Laufzeit zu registrieren.

Antwort

0

Alles in spitzen Klammern muss zur Kompilierzeit bekannt sein - Generika sind eine Kompilierzeitfunktion. Es gibt viele Überladungen von RegisterType, die ein laufzeitbestimmtes Type-Objekt benötigen, wie Sie es hier tun.

Verschieben Sie Ihre Laufzeittyp-Referenz aus den spitzen Klammern und in die Klammern.

this.unityContainer.RegisterType(obj.Value.GetType()); 
+0

Tippfehler auf dem letzten Teil. – Marsh

+1

Ahh. der zweite Weg hat funktioniert. Ich habe es jedoch nie gelöst, bevor ich es benutzt habe. Vielen Dank für die Info! – Marsh

Verwandte Themen