コード例 #1
0
        private async IAsyncEnumerable <IPluginInfo> LoadPluginFiles(ILocation[] locations, List <string> resFileIds)
        {
            foreach (var loc in locations)
            {
                var pluginsLoc = loc.Combine(Location.Library.PluginsFolderName);

                if (m_FileLoader.Exists(pluginsLoc))
                {
                    await foreach (var pluginLoc in m_FileLoader.EnumSubFolders(pluginsLoc))
                    {
                        yield return(new PluginInfo(pluginLoc.Segments.Last(), m_FileLoader.LoadFolder(pluginLoc, m_Filter)));
                    }
                }
            }

            if (m_Config.Plugins?.Any() == true)
            {
                foreach (var pluginName in m_Config.Plugins)
                {
                    yield return(new PluginInfo(pluginName, ProcessLibraryItems(
                                                    m_LibraryLoader.LoadPluginFiles(pluginName, null), resFileIds, true)));
                }
            }
        }