//------------------------------------------------------------------------------------------------------------------------------------------------- private Type LoadComponentContainerBuilderType() { var containerBuilderTypes = OwnerHost.LoadAssembly( typeof(IComponentContainerBuilder), OwnerHost.BootConfig.MicroserviceConfig.InjectionAdapter.Assembly); if (containerBuilderTypes.Count != 1) { throw new Exception($"{containerBuilderTypes.Count} IComponentContainerBuilder found."); } return(containerBuilderTypes.First()); }
//------------------------------------------------------------------------------------------------------------------------------------------------- private IEnumerable <IFeatureLoader> GetFeatureLoadersByModuleConfigs(params MicroserviceConfig.ModuleConfig[] configs) { var types = new List <Type>(); foreach (var moduleConfig in configs) { var featureLoaderTypes = OwnerHost.LoadAssembly(typeof(IFeatureLoader), moduleConfig.Assembly); types.AddRange(featureLoaderTypes.Where(x => x.GetTypeInfo().IsDefined(typeof(DefaultFeatureLoaderAttribute))).ToList()); if (moduleConfig.Features != null) { foreach (var featureConfig in moduleConfig.Features) { var type = GetTypeByFeatureLoaderConfig(featureLoaderTypes, featureConfig); if (type == null) { throw new Exception($"Feature wasn't found: '{featureConfig.Name}'."); } else { types.Add(type); } } } } var featureLoaderList = types .Distinct() .Select(x => { OwnerHost.Logger.FoundFeatureLoaderComponent(x.FriendlyName()); return((IFeatureLoader)Activator.CreateInstance(x)); }) .ToList(); return(featureLoaderList); }