/// <summary> /// Initialize assmeblies registration in order to register into the ioc container. /// </summary> internal static void Initialize() { var registeredAssmeblies = new HashSet <string>(); var imcAsm = typeof(ILoggerPoolFactory).Assembly; iocManager.RegisterAssemblyAsInterfaces(imcAsm); registeredAssmeblies.Add(imcAsm.FullName); var assemblyFinder = iocManager.Resolve <IAssemblyFinder>(); foreach (var asm in assemblyFinder.GetAllAssemblies().Union(assemblyFinder.GetAllBinDirectoryAssemblies())) { try { if (registeredAssmeblies.Contains(asm.FullName)) { continue; } var types = asm.GetExportedTypes(); foreach (var type in types) { if (type.Namespace.StartsWith(ImcFrameworkConstants.ImcFramework)) { iocManager.RegisterAssemblyAsInterfaces(asm); registeredAssmeblies.Add(asm.FullName); break; } } } catch { } } //register the progressInfoManager as singleton iocManager.Register <IProgressInfoManager>(ProgressInfoManager.Instance); //load the Global Register & call the register method var gl = iocManager.Resolve <IEnumerable <IGlobalRegister> >(); gl.ToList().ForEach(zw => { zw.Register(iocManager); }); //resolve the modules buildInModules = iocManager.Resolve <IEnumerable <IServiceModule> >(); extensionModules = iocManager.Resolve <IEnumerable <IModuleExtension> >(); }
public void register_asm_can_resolve_the_IServiceModule() { ioc.RegisterAssemblyAsInterfaces(typeof(ILoggerPoolFactory).Assembly); ioc.RegisterAssemblyAsInterfaces(asm); var serviceModules = ioc.Resolve <IEnumerable <IServiceModule> >(); foreach (var md in serviceModules) { Console.WriteLine(md.Name); } Assert.IsNotNull(serviceModules); Console.WriteLine(serviceModules.Count()); }