2017-08-04 79 views
1

爲什麼我不能這樣做?其中obj值是一個有效的類型。使用Unity Container在運行時註冊類型

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

OR

this.unityContainer.RegisterType(obj.Value); 

當我能做到這一點......這裏的obj值是相同的類型,但在編譯時已知。

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

我的最終目標是能夠在運行時註冊幾種不同的類型。

回答

0

在編譯時必須知道尖括號中的任何內容 - 泛型是編譯時功能。有很多RegisterType的重載需要運行時確定的Type對象,比如你在這裏做的。

將您的運行時類型引用移出尖括號並放入括號中。

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

在最後一部分輸入錯誤。 – Marsh

+1

啊。第二種方式確實奏效。我在使用它之前從未解決過它。非常感謝! – Marsh

相關問題