Beispiel #1
0
            //-------------------------------------------------------------------------------------------------------------------------------------------------

            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());
            }
Beispiel #2
0
            //-------------------------------------------------------------------------------------------------------------------------------------------------

            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);
            }