2013-09-28 2 views
0

У меня есть следующий интерфейс и реализацияUnity 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) 

Я пытался добавить пустой открытый конструктор, но нет успеха.

Может ли кто-нибудь помочь в этом? Благодарю.

+0

Вы можете оставить создание контейнера и разрешающий код? Правильно ли вы загружаете конфигурацию с помощью 'IUnityContainer container = new 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

Смежные вопросы