コード例 #1
0
 internal void Reset()
 {
     ContainerPrepared = false;
     _container        = null;
     RootAssembliesNames.Clear();
     RegisteredAssemblies.Clear();
 }
コード例 #2
0
        private IEnumerable <Assembly> GetAssembliesForContainer()
        {
            if (RootAssembliesNames.Any())
            {
                var allAssembliesInCurrentDomain = AppDomain.CurrentDomain.GetAssemblies();

                //Filter from given Root assembly names
                if (RootAssembliesNames.Any())
                {
                    var filtered =
                        (from assemblyToSelect in allAssembliesInCurrentDomain
                         from nameToFilter in RootAssembliesNames
                         let lowerNameToFilter = nameToFilter.ToLower()
                                                 let lowerNameAssemblyToSelect = assemblyToSelect.FullName.ToLower()
                                                                                 where lowerNameAssemblyToSelect.StartsWith(lowerNameToFilter)
                                                                                 select assemblyToSelect);
                    return(filtered);
                }

                //Get all assemblies in the current domain
                return(allAssembliesInCurrentDomain);
            }

            //Get all assemblies in the  execution location
            var currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            if (currentPath == null)
            {
                throw new NullReferenceException(
                          $"Could not load detail from:" +
                          $" '{nameof(Assembly.GetExecutingAssembly)}' about the current execution location.");
            }


            var folder = new DirectoryInfo(currentPath);
            var files  = new List <FileInfo>();

            var dllFiles = folder.GetFiles("*.dll", SearchOption.TopDirectoryOnly);

            files.AddRange(dllFiles);
            var exeFiles = folder.GetFiles("*.exe", SearchOption.TopDirectoryOnly);

            files.AddRange(exeFiles);

            return(files.Select(x => Assembly.LoadFrom(x.FullName)));
        }
コード例 #3
0
        private List <RegisteredFile> GetAssembliesDetail()
        {
            var currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var allFiles    = GetFilesFromPath(currentPath);

            if (!RootAssembliesNames.Any())
            {
                return(allFiles);
            }

            var filtered = from fileToSelect in allFiles
                           from nameToFilter in RootAssembliesNames
                           let lowerNameToFilter = nameToFilter.ToLower()
                                                   let lowerNameAssemblyToSelect = fileToSelect.Name.ToLower()
                                                                                   where lowerNameAssemblyToSelect.StartsWith(lowerNameToFilter)
                                                                                   select fileToSelect;

            return(filtered.ToList());
        }