This commit is contained in:
Paddy Xu
2017-04-12 17:58:52 +03:00
commit 7e2001bc4d
42 changed files with 1935 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using QuickLook.Plugin;
namespace QuickLook
{
internal class PluginManager
{
private static PluginManager _instance;
internal PluginManager()
{
LoadPlugins();
}
internal List<IViewer> LoadedPlugins { get; } = new List<IViewer>();
internal static PluginManager GetInstance()
{
return _instance ?? (_instance = new PluginManager());
}
private void LoadPlugins()
{
Directory.GetFiles(Path.Combine(App.AppPath, "Plugins\\"), "QuickLook.Plugin.*.dll",
SearchOption.AllDirectories)
.ToList()
.ForEach(
lib =>
{
(from t in Assembly.LoadFrom(lib).GetExportedTypes()
where !t.IsInterface && !t.IsAbstract
where typeof(IViewer).IsAssignableFrom(t)
select t).ToList()
.ForEach(type => LoadedPlugins.Add((IViewer) Activator.CreateInstance(type)));
});
}
}
}