Я использую Карту структуры (версия 4.7) в своем решении VS 2019, где у меня есть 8 проектов, таких как (подмодули) и 1 основной проект ASP.NET MVC5.
Все проекты написаны на C #, а основной файл StructureMap DefaultRegistry у меня есть в этом проекте MVC, который вызывает Фасады для каждого проекта и использует их в веб-презентации.
В этом файле приведен пример 1 модуля:
// Initialize log4net.
XmlConfigurator.Configure();
Scan(
scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.With(new ControllerConvention());
});
// Log
For<ILog>().Use(c => LogManager.GetLogger(GetType())).Singleton();
// Extruder
For<Project1.Repositories.ILibraryRepository>().Use<Project1.Repositories.LibraryRepository>().Singleton();
For<Project1.Repositories.IExtruderRepository>().Use<Project1.Repositories.ExtruderRepository>().Singleton();
For<Project1.Repositories.IProductSeriesRepository>().Use<Project1.Repositories.ProductSeriesRepository>().Singleton();
For<Project1.Repositories.IRepositoryLogger>().Use<Project1.Repositories.RepositoryLogger>().Singleton();
For<Project1.Repositories.IDynamicMasterCoefRepository>().Use<Project1.Repositories.DynamicMasterCoefRepository>().Singleton();
For<Project1.Repositories.IDynamicTemperatureCoefsRepository>().Use<Project1.Repositories.DynamicTemperatureCoefsRepository>().Singleton();
For<Project1.Repositories.IDynamicTimeCoefsRepository>().Use<Project1.Repositories.DynamicTimeCoefsRepository>().Singleton();
For<Project1.Repositories.IDynamicVacCoefsRepository>().Use<Project1.Repositories.DynamicVacCoefsRepository>().Singleton();
For<Project1.Repositories.IPowerDissipationCoefsRepository>().Use<Project1.Repositories.PowerDissipationCoefsRepository>().Singleton();
For<Project1.Repositories.ISubsidiaryRepository>().Use<Project1.Repositories.SubsidiaryRepository>().Singleton();
For<Project1.Repositories.ITechnologyRepository>().Use<Project1.Repositories.TechnologyRepository>().Singleton();
For<Project1.Repositories.ITemperaturesRepository>().Use<Project1.Repositories.TemperaturesRepository>().Singleton();
For<Project1.Repositories.ISerieFileRepository>().Use<Project1.Repositories.SerieFileRepository>().Singleton();
For<Project1.Services.IProductSeriesService>().Use<Project1.Services.ProductSeriesService>().Singleton();
For<Project1.Services.IExtruderService>().Use<Project1.Services.ExtruderService>().Singleton();
For<Project1.Services.IProductService>().Use<Project1.Services.ProductService>().Singleton();
For<Project1.Services.ILineService>().Use<Project1.Services.LineService>().Singleton();
For<Project1.Services.ISerieFileService>().Use<Project1.Services.SerieFileService>().Singleton();
For<Project1.Services.ICsvFileService>().Use<Project1.Services.CsvFileService>().Singleton();
For<Project1.Services.IDynamicService>().Use<Project1.Services.DynamicService>().Singleton();
For<Project1.Services.IPdfFileService>().Use<Project1.Services.PdfFileService>().Singleton();
For<Project1.Services.ISParametersService>().Use<Project1.Services.SParametersService>().Singleton();
For<Project1.Services.IGenModelService>().Use<Project1.Services.GenModelService>().Singleton();
For<Project1.Services.IStpFileService>().Use<Project1.Services.StpFileService>().Singleton();
For<Project1.Facades.IControllerFacade>().Use<Project1.Facades.ControllerFacade>().Singleton();
For<Project1.Facades.IDownloadFacade>().Use<Project1.Facades.DownloadFacade>().Singleton();
И таких частей у меня есть 8 до того, как я разделил 1 проект на эти модули sob,У меня только менее 20 строк, другие интерфейсы найдены и загружены автоматически, но теперь я должен записать каждую зависимость в файл определения структурной карты следующим образом
Есть ли решение, как сделать это лучше, проще, корочеи еще приятно ??
Спасибо