2017-02-12 20 views
1

У меня есть сопоставитель, который берет данные из проекта репозитория. У меня есть IMenueMapper интерфейс, который передается в HomeController так:Устранить зависимость от интерфейса хранилища MVC5 с использованием структуры map

public HomeController(IMenueMapper menueMapper) 
{ 
    _menueMapper = menueMapper; 
} 

но сам menuemapper класс использовать IMenueMapperRepository, и это пришло из другого проекта, и передается в через DLL

public MenueMapper(IMenueItemsRepository menueItems) 
{ 
    _menueItems = menueItems; 
} 

While Я могу легко решить IMenuemapper в проекте MVC, используя structmap.mvc5, я не могу разрешить репозиторий. Есть ли способ достижения DI в этом случае?

+1

Почему вы не используете 'For' также для 'IMenueItemsRepository'? Что-то вроде этого 'For (typeof (IMenueItemsRepository)). Используйте (typeof (....))', где '...' относится к конкретной реализации 'IMenueItemsRepository'. – Christos

+0

Вам необходимо зарегистрировать абстракцию (интерфейс и реализацию репозитория) в корне композиции. – Nkosi

+0

@Nkosi Что вы подразумеваете под этим? –

ответ

0

Вам необходимо зарегистрировать абстракцию (интерфейс репозитория и реализацию) в корне композиции.

Вы указали, что IMenueMapper зарегистрирован через;

scan.AssemblyContainingType<MenueMapper>(); 

С

но сам MenueMapper класс использовать IMenueMapperRepository и это пришло из другого проекта и передается в через DLL

Затем он также должен быть отсканированы как это относится к другой сборке

scan.AssemblyContainingType<MenueItemsRepository>(); 

Убедитесь, что проект ссылается на данную сборку