2015-07-02 3 views
0

Я работаю с единством, и я создал тест, который не работает.Единственное исключение при регистрации типов

Когда я бегу WebAPP и вызвать container.LoadConfiguration() от метода RegisterTypes(), я получаю InvalidOperationException со следующим сообщением:

Имя типа или псевдоним IHolaMundo не может быть решена. Проверьте конфигурационный файл и проверьте его имя.

Вот мой код:

unity.config flie:

<?xml version="1.0"?> 
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 


    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration"/> 

    <assembly name="unityTest.Data.Hola" /> 
    <assembly name="unityTest.AppServices.Interfaces" /> 
    <assembly name="unityTest.AppServices.Servicios" /> 
    <assembly name="unityTest.UI.ServiceInterfaces" /> 

    <namespace name="unityTest.Data.Hola" /> 
    <namespace name="unityTest.AppServices.Interfaces" /> 
    <namespace name="unityTest.AppServices.Servicios" /> 
    <namespace name="unityTest.UI.ServiceInterfaces" /> 

    <container> 
    <register type="IHolaMundo" mapTo="HolaMundo"/> 
    <register type="IServicioHola" mapTo="ServicioHola"/> 
    </container> 
</unity> 

HolaMundo.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using unityTest.AppServices.Interfaces; 

namespace unityTest.Data.Hola 
{ 
    public class HolaMundo 
     : IHolaMundo 
    { 
     private string _saludo = ""; 

     public HolaMundo() 
     { 
      _saludo = "Hola Mundo"; 
     } 
     public string Saludo() 
     { 
      return _saludo; 

     } 
    } 
} 

IHolaMundo.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace unityTest.AppServices.Interfaces 
{ 
    public interface IHolaMundo 
    { 
     string Saludo(); 
    } 
} 

ServicioHola.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using unityTest.AppServices.Interfaces; 

namespace unityTest.AppServices.Servicios 
{ 
    public class ServicioHola 
    { 
     IHolaMundo _miSaludador = null; 

     public ServicioHola(IHolaMundo saludador) 
     { 
      _miSaludador = saludador; 
     } 

     public string Saludar() 
     { 
      return _miSaludador.Saludo(); 
     } 
    } 
} 

... и HomeController Конструкторы:

private IServicioHola _holaService = null; 
     public HomeController(IServicioHola servicio) 
     { 
      _holaService = servicio; 
     } 

любая идея?

+0

Вы установили единство через пакет nuget? –

+0

Да Fabio Я установил единство через пакет nuget. –

+0

Верно ли это? –

ответ

0

Из предоставленной конфигурации XML зарегистрированные имена сборок и имена пространства имен одинаковы. Пожалуйста, дважды проверьте свое имя сборки вашего проекта. Я предполагаю, что имя сборки проекта будет unityTest или unityTest.Data, или unityTest.AppServices, что может отсутствовать в вашей конфигурации Unity XML.

Пожалуйста, убедитесь, что правильное имя сборки уже настроен в <assembly name="..."/>

Шаги: 1. В рамках проекта, выбранного в обозревателе решений, в меню Проект выберите команду Свойства. 2. Перейдите на вкладку «Приложение» и проверьте поле «Название сборки».

+0

Спасибо, Lavande, –

+0

Я проверил все пространства сборки и имен, и они верны, но в вашем ответе есть одно замечание, что я Не понимаю ... Ты сказал: «...которые могут отсутствовать в вашей конфигурации Unity XML », но я ссылаюсь на ассамблеи и пространства имен в файле unique.config .... ¿? Отсутствует какая-либо ссылка? Спасибо заранее –

+0

@ JerónimoMolina, Название сборки должно отражать реальное имя сборки, а не пространство имен. например Будет ли ваш проект генерировать две библиотеки DLL с именами «unityTest.AppServices.Interfaces» и «unityTest.AppServices.Servicios»? Если ваше имя DLL является «unityTest.AppServices», то вы необходимо иметь такую ​​конфигурацию, как: ' ' – Lavande

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