2013-09-28 24 views
0

我有以下的接口和實現統一3:類型不具有可訪問的構造

namespace ProjectName.Web 
{ 
    public interface IWebUtil 
    {   
    } 
} 


namespace ProjectName.Web 
{ 
    public class WebUtil : IWebUtil 
    {     
    } 
} 

在我的配置我有這個註冊。我使用Unity 3

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <assembly name="ProjectName.Web" /> 
    ... 
    <register name="WebUtil" type="ProjectName.Web.IWebUtil" mapTo="ProjectName.Web.WebUtil"> 
    <lifetime type="transient" />  
    </register> 
    ... 

當我試圖解決這個配置我收到此錯誤:

Exception is: InvalidOperationException - The type IWebUtil does not have an accessible  constructor. 
----------------------------------------------- 
At the time of the exception, the container was: 
Resolving ProjectName.Web.IWebUtil,(none) 

我已嘗試添加空公共構造,但沒有sucess。

任何人都可以幫忙嗎?謝謝。

+0

您可以發佈您的容器創建和解析代碼?你是否正確地加載配置'IUnityContainer容器=新的UnityContainer() .LoadConfiguration();'? – nemesv

回答

1

第一步是確保您正在加載Unity配置,因爲這不是默認情況下完成的。要做到這一點:

using Microsoft.Practices.Unity.Configuration; 

container.LoadConfiguration(); 

我假設你已經這樣做了。我也要去假設你正在嘗試使用下面的代碼來解決IWebUtil:

container.Resolve<IWebUtil>(); 

這引發InvalidOperationException因爲IWebUtil被配置爲一個名爲登記(名稱爲「WebUtil」)。因此,無論使用解析配置的名稱:

container.Resolve<IWebUtil>("WebUtil"); 

或者變更登記是一個默認的(未命名)註冊地:

<register name="" type="ProjectName.Web.IWebUtil" mapTo="ProjectName.Web.WebUtil"> 
<lifetime type="transient" />  
</register> 
+1

問題是,我打電話解決沒有參數 – zosim

相關問題