2016-10-28 9 views
1

У меня есть библиотека классов, содержащая некоторые службы.Модуль библиотеки классов buildmap

Использование структурной карты Я хочу, чтобы эти службы регистрировались в этой библиотеке классов. Это приводит к сборкам с использованием этой библиотеки классов, которые не должны устанавливать зависимости для этой библиотеки классов, а просто вызывать модуль, который устанавливает это в самой библиотеке.

Например, это можно сделать с помощью autofac. Допустим, у меня есть библиотека классов с IAAAService и IBBBService. Использование autofac я могу в этой библиотеке классов необходимо выполнить следующие действия:

public class AutofacModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<AAAService>().As<IAAAService>(); 
     builder.RegisterType<BBBService>().As<IBBBService>(); 
    } 
} 

И от узла, который должен использовать библиотеку я могу это сделать:

builder.RegisterModule(new AutofacModule()); 

Я нахожусь в ситуации, когда я обязан используйте структурную карту, и я хочу сделать что-то подобное.

Возможно ли это в структуре карты? Если да, то как мне это сделать?

Спасибо :)

ответ

1

В StructureMap, есть подобная концепция называется реестр. Взгляните сюда для получения более подробной информации: http://structuremap.github.io/registration/

Обратите внимание, что я не рекомендую использовать контейнер внутри ваших классов. Контейнеры должны использоваться только внутри приложений (if they are to be used at all).

Цитируя this article:

A DI контейнер должен ссылаться только из состава корня. Все остальные модули не должны иметь ссылки на контейнер.

+0

Спасибо за ответ и предложения, очень полезно. – Diemauerdk

+0

Добро пожаловать. –