private static BasicIocContainer LoadDasyncIocModules(string directory) { var iocContainer = new BasicIocContainer(); var dllFiles = Directory.GetFiles(directory, "*dasync*ioc*.dll", SearchOption.TopDirectoryOnly); foreach (var dllFilePath in dllFiles) { Assembly assembly; try { assembly = LoadAssembly(dllFilePath); } catch { continue; } if (TryFindDiBindings(assembly, out var bindings)) { iocContainer.Load(bindings); Console.WriteLine($"Loaded DI bindings for {assembly.FullName}"); } } return(iocContainer); }
static async Task PlugInDasync(IKernel appKernel, bool inMemoryEmulation) { var engineContainer = new BasicIocContainer() .Load(Dasync.Ioc.DI.Bindings) .Load(Dasync.Serialization.DI.Bindings) .Load(Dasync.Serialization.Json.DI.Bindings) .Load(Dasync.ServiceRegistry.DI.Bindings) .Load(Dasync.Proxy.DI.Bindings) .Load(Dasync.AsyncStateMachine.DI.Bindings) .Load(Dasync.ExecutionEngine.DI.Bindings) .Load(Dasync.Fabric.Sample.Base.DI.Bindings) .Load(Dasync.Bootstrap.DI.Bindings); if (inMemoryEmulation) { engineContainer.Load(Dasync.Fabric.InMemory.DI.Bindings); } else { engineContainer.Load(Dasync.Fabric.FileBased.DI.Bindings); } engineContainer.Bind(typeof(IAppIocContainerProvider), new ConstantAppIocContainerProvider(appKernel.ToIocContainer())); await engineContainer.Resolve <Bootstrapper>().BootstrapAsync(default);
private static IIocContainer CreateDefaultEngineIocContainer(params string[] assemblyDirectories) { var container = new BasicIocContainer(); foreach (var bindings in DefaultBindingsCollection) { container.Load(bindings); } if (assemblyDirectories != null) { foreach (var directory in assemblyDirectories) { if (!Directory.Exists(directory)) { continue; } var dllFiles = Directory.GetFiles(directory, "*dasync*.dll", SearchOption.TopDirectoryOnly); foreach (var dllFilePath in dllFiles) { var fileName = Path.GetFileName(dllFilePath); if (DefaultBindingsAssemblyFileNames.Contains(fileName)) { continue; } Assembly assembly; try { assembly = LoadAssembly(dllFilePath); } catch { continue; } if (!TryFindDiBindings(assembly, out var bindings)) { continue; } // Ignore other fabrics, if a such assembly was copied over by accident. if (bindings.Keys.Contains(typeof(IFabric))) { continue; } container.Load(bindings); } } } return(container); }
private static IIocContainer GetContainer(ITeclynConfiguration configuration) { var ioc = configuration.IocContainer; if (ioc == null) { ioc = new BasicIocContainer(); } return(ioc); }