public void Unregister(Registries registries) { registries.Registry <Plugin>().Unregister(this); registries.Registry <DeviceTypeAddOn>().UnregisterAll(DeviceTypes); registries.Registry <AppEntryAddOn>().UnregisterAll(AppEntries); registries.Registry <ParadigmTemplate>().UnregisterAll(Paradigms); registries.Registry <DeviceTemplate>().UnregisterAll(Devices); registries.Registry <ConsumerTemplate>().UnregisterAll(Consumers); MarkerDefinitions.MarkerRegistry.UnregisterAll(CustomMarkers.Values); }
public static IReadOnlyCollection <Plugin> ScanPlugins(Registries registries, Action <string, Exception> exceptionHandler) { var plugins = new LinkedList <Plugin>(); foreach (var file in Directory.GetFiles(Path.GetFullPath(FileUtils.ExecutableDirectory), PluginFileNamePattern)) { Logger.Info("ScanPlugins - loading plugin", "assemblyFile", file); try { var plugin = new Plugin(Assembly.LoadFile(file)); plugins.AddLast(plugin); plugin.LoadMarkers(); plugin.LoadDeviceTypes(); plugin.LoadAppEntries(); plugin.LoadExperiments(); plugin.LoadDevices(); plugin.LoadStreamConsumers(); registries.Registry <Plugin>().Register(plugin); foreach (var deviceType in plugin.DeviceTypes) { registries.Registry <PluginDeviceType>().Register(deviceType); } foreach (var appEntry in plugin.AppEntries) { registries.Registry <PluginAppEntry>().Register(appEntry); } foreach (var experiment in plugin.Experiments) { registries.Registry <PluginExperiment>().Register(experiment); } foreach (var device in plugin.Devices) { registries.Registry <PluginDevice>().Register(device); } foreach (var streamConsumer in plugin.StreamConsumers) { registries.Registry <PluginStreamConsumer>().Register(streamConsumer); } } catch (Exception e) { Logger.Error("ScanPlugins - failed to load assembly", e, "assemblyFile", file); exceptionHandler(file, e); } } return(plugins); }