【发布时间】:2014-08-18 15:41:07
【问题描述】:
我有一个程序集,其中包含相同通用接口的一定数量的实现。 我在 Windsor 中使用以下注册方式一次性注册了所有这些:
Types
.FromAssembly(Assembly.GetExecutingAssembly())
.BasedOn(typeof(IQuery<,>))
现在我想获取所有已注册实现的数组,但如果我尝试这个 Castle 炸弹:
container.ResolveAll(typeof (IQuery<,>))
为什么?
【问题讨论】:
-
有什么例外?
-
那么期望是这个接口实现的一个数组,如果我在运行时通过调试检查容器,它实际上是一个数组。但是,如果我尝试使用通用接口来解决所有问题,城堡会抛出一个异常,说它无法解析通用接口数组
-
您无法解析开放的泛型类型,因为 Windsor 不知道要为您创建什么。您必须指定一个封闭的泛型类型,例如
container.ResolveAll(typeof(IQuery<int, double>))。
标签: c# generics castle-windsor