4

当我使用Unity进行依赖注入时,我对MVC的IDependencyResolver.GetServices的实现有个疑问。应该使用IDependencyResolver.GetServices返回默认(未命名)注册

有几个示例实现可以找到,其中大部分实现了解决尝试解析未注册类型时Unity抛出异常的问题。

Usualy GetServices实现这样的:

IEnumerable<object> IDependencyResolver.GetServices(Type serviceType) 
{ 
    try 
    { 
     return _container.ResolveAll(serviceType); 
    } 
    catch 
    { 
     return new List<object>(); 
    } 
} 

什么是关心我的,我一直无法找到任何确认无论哪种方式,是ResolveAll不返回默认值(未命名)注册。见here

IDependencyResolver的文档不会做出相同的声明。

有谁知道IDependencyResolver.GetServices应该返回所有已注册的实例还是仅返回已命名的实例(使用Unity的说法)?

+0

当NHibernate使用这种方法时,我得到了奇怪的结果。你有没有得到一个决议? – Rippo 2011-08-16 06:32:38

+0

不是,还有一些其他答案,但看起来他们已被删除。 – 2011-08-26 04:03:36

+0

嗯..问题的一部分可能是您的文章缺少“问题”部分。 – 2012-06-26 13:50:22

回答

0

请尝试以下代码。我希望这会起作用。

return (serviceType.IsClass && !serviceType.IsAbstract) ||  _container.IsRegistered(serviceType) ? _container.ResolveAll(serviceType) : new object[] {};