我認爲我知道很多關於Unity的知識,但以下情況除外。 I'm使用Unity容器註冊我的棱鏡意見,像這樣有一個名爲準對象:使用命名註冊解析實例不會拋出異常
_unityContainer.RegisterType<object, MyDummyView>("MyDummyViewName");
,我通過調用
object view = _unityContainer.Resolve<object>("MyDummyViewName");
到目前爲止好請求視圖的實例。現在我在我的系統中發現了一個錯誤,因爲我使用了錯誤的名稱來解析一個視圖的實例,並且我期望Unity拋出一個異常。
object view = _unityContainer.Resolve<object>("MyWrongDummyViewName");
但團結不拋出任何異常(如ResolutionFailedException
或ActivationException
)。當我執行上面的調用時,它將返回一個新的object
,而不註冊具有給定(錯誤)名稱的任何視圖。
這是Unity的正確行爲嗎?我真的希望在這裏得到一個例外。在Prism的範圍內,這是一個問題,因爲在導航到錯誤的目標(視圖)期間,我不會得到任何異常。
感謝您的回答。問題是[棱鏡基本區域導航](http://msdn.microsoft.com/en-us/library/gg430861(v = pandp.40).aspx#sec8)需要將我的視圖註冊爲對象。否則導航基礎結構不能解析視圖 – Jehof 2013-02-26 11:39:33
這是設計行爲 - Unity將嘗試解析未註冊的具體類。由於沒有註冊(對象,「WhateverName」)它新增了一個對象實例。這不是最佳的,但這並不奇怪。 – 2013-02-27 07:55:16
@ChrisTavares Unity已經在嘗試解決具體類的事實是已知的(我記錄在案,我相信)。但是它忽略了一個明確指定的映射名稱......這與Unity的行爲有所不同,當詢問一個接口時,至少對我而言*是令人驚訝的。 – 2013-03-01 05:55:46