我有基类和几个派生类。如何通过Unity将这些派生类型解析为IEnumerable集合?我已经尝试过如同
var myObjectList = (IEnumerable<BaseClass>) UnityContainerFactory.UnityContainer.ResolveAll(typeof(BaseClass));
但它引发了invalidCastException
答案 0 :(得分:2)
您应该只使用ResolveAll
的泛型重载。
var myObjectList = UnityContainerFactory.UnityContainer
.ResolveAll<BaseClass>();
或者,使用Enumerable.Cast
:
var myObjectList = UnityContainerFactory.UnityContainer
.ResolveAll(typeof(BaseClass))
.Cast<BaseClass>();
答案 1 :(得分:1)
我没有使用Unity,但假设您使用的是.NET 3.5或更高版本,您可以尝试使用LINQ:
var myObjectList = UnityContainerFactory.UnityContainer
.ResolveAll(typeof(BaseClass))
.Cast<BaseClass>();
(您可能需要致电ToList()
将其具体化为List<BaseClass>
。)