Exemple #1
0
        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);
        }
Exemple #2
0
        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);
Exemple #3
0
        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);
        }
Exemple #4
0
        private static IIocContainer GetContainer(ITeclynConfiguration configuration)
        {
            var ioc = configuration.IocContainer;

            if (ioc == null)
            {
                ioc = new BasicIocContainer();
            }

            return(ioc);
        }