コード例 #1
0
ファイル: PluginLoader.cs プロジェクト: giepske/AppDash
        public void LoadPlugins(string pluginPath)
        {
            _pluginResolver.ClearPlugins();

            List <string> plugins = Directory.GetDirectories(pluginPath)
                                    .Where(directory => File.Exists(Path.Combine(directory, Path.GetFileName(directory) + ".dll")))
                                    .Select(directory => Path.Combine(directory, Path.GetFileName(directory) + ".dll")).ToList();

            foreach (string plugin in plugins)
            {
                try
                {
                    Assembly assembly = Assembly.LoadFile(plugin);

                    LoadAppDashPlugins(assembly);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }

            Console.WriteLine($"Loaded {_pluginResolver.GetPluginInstances().Count()} plugin(s).");
        }
コード例 #2
0
ファイル: PluginInitializer.cs プロジェクト: giepske/AppDash
 public void InitializePlugins()
 {
     foreach (AppDashPlugin plugin in _pluginResolver.GetPluginInstances())
     {
         InitializePluginTiles(plugin.Key);
         InitializePluginSettings(plugin.Key);
         InitializePluginPages(plugin.Key);
     }
 }
コード例 #3
0
        public async Task <IEnumerable <AppDashPlugin> > GetPluginInstances()
        {
            await PluginLock.WaitAsync();

            var plugins = _pluginResolver.GetPluginInstances();

            PluginLock.Release();

            return(plugins);
        }
コード例 #4
0
ファイル: PluginManager.cs プロジェクト: giepske/AppDash
 public IEnumerable <AppDashPlugin> GetPluginInstances()
 {
     return(_pluginResolver.GetPluginInstances());
 }