public static void LoadRazerChromaPlugins(this MainWindow mainWindow) { var effects = new List <IChromaEffect>(); var type = typeof(IChromaEffect); var assembly = type.Assembly; effects.AddRange(AssemblyHelpers.LoadInstances <IChromaEffect>(assembly)); var pluginDir = Path.Combine(Directory.GetCurrentDirectory(), "plugins"); var files = Directory.EnumerateFiles(pluginDir, "*.dll", SearchOption.TopDirectoryOnly); foreach (var file in files) { var plugin = AssemblyHelpers.LoadInstance <IChromaEffect>(file); if (plugin == null) { continue; } Console.WriteLine($" [Plugin][{DateTime.Now}] {Path.GetFileName(file)} loaded."); effects.Add(plugin); } Effects = effects; }
public static IStreamablePlayerHost LoadPlayerHost <T>() where T : IStreamablePlayerHost { var type = typeof(T); var assembly = type.Assembly; Metadata = AssemblyHelpers.LoadInstance <IPlayerMetadata>(assembly); var instance = Activator.CreateInstance(type) as IStreamablePlayerHost; return(instance); }
public static IEnumerable <IListenerPlugin> LoadPlugins() { var pluginDir = Path.Combine(Directory.GetCurrentDirectory(), "plugins"); Directory.CreateDirectory(pluginDir); var files = Directory.EnumerateFiles(pluginDir, "*.dll", SearchOption.TopDirectoryOnly); foreach (var file in files) { var plugin = AssemblyHelpers.LoadInstance <IListenerPlugin>(file); if (plugin == null) { continue; } Console.WriteLine($" [Plugin][{DateTime.Now}] {Path.GetFileName(file)} loaded."); yield return(plugin); } }