Я стараюсь вести реестр StructureMap для каждого из моих проектов, чтобы они могли обрабатывать свои собственные настройки. Мой основной проект добавляет ссылки на каждую из его зависимостей. В моем основном у меня обычно есть класс начальной загрузки, который отвечает за создание и настройку контейнера. (Я избегаю статической ObjectFactory, когда это возможно.)
public class ApplicationBootstraper
{
public IContainer Container { get; set; }
public ApplicationBootstraper()
{
Container = new Container(x=>
{
x.AddRegistry<SettingsRegistry>();
x.AddRegistry<ProjectRegistry>();
//more registries go here or application specific configuration.
});
}
}
Относительно того, чтобы проект зависел от другого проекта, осведомленного о StructureMap. В версии 2.5.4 добавлена возможность включения другого реестра в текущий реестр.
Например, у меня есть «Общий» проект, от которого я должен зависеть. Я могу сделать следующее:
public class ProjectRegistry : Registry
{
public ProjectRegistry()
{
IncludeRegistry<CommonsRegistry>();
Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
}
}
Надеюсь, это поможет.