2017-08-04 51 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

相关问题