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[] {};