public void TestPlugins <T>(object sender) where T : IEncoderPlugin { PluginsManager <T> pluginManager = new PluginsManager <T>(); pluginManager.LoadPlugins("D:\\OOPBasics"); List <T> plugins = (List <T>)pluginManager.Plugins; int pluginIndex = 0; foreach (var currentPlugin in plugins) { Console.WriteLine(pluginIndex++ + ". " + currentPlugin.GetName()); } string input = Console.ReadLine(); if (Int32.TryParse(input, out int selectedEncoder) && selectedEncoder < plugins.Count) { IEncoder algorithmEncoder = null; IEnumerable <String> encoderParameters = plugins[selectedEncoder].GetRequiredArguments(); if (encoderParameters != null) { IDictionary <string, string> parametersDictionary = new Dictionary <string, string>(); foreach (var parameter in encoderParameters) { Console.WriteLine("Please insert value for " + parameter); String parameterInput = Console.ReadLine(); parametersDictionary[parameter] = parameterInput; } plugins[selectedEncoder].SetArguments(parametersDictionary); algorithmEncoder = plugins[selectedEncoder].GetEncoder(); } else { algorithmEncoder = plugins[selectedEncoder].GetEncoder(); } TextEncoder textEncoder = new TextEncoder(algorithmEncoder); TextReader textReader = GetInputTextReader(pathToReadEncode); StreamEncoder streamEncoder = new StreamEncoder(textEncoder, textReader); BinaryWriter binaryWriter = GetOutputBinaryWriter(pathToWriteEncode); streamEncoder.Encode(binaryWriter); textReader.Close(); binaryWriter.Close(); Console.WriteLine("File modified."); } else { Console.WriteLine("Invalid algorithm index given."); } }
public void Initialize() { encodersPluginManager.LoadPlugins(@"E:\OOPBasics"); decodersPluginManager.LoadPlugins(@"E:\OOPBasics"); char optionNo = '1'; foreach (var encoderPlugin in encodersPluginManager.Plugins) { consoleMenu.AddItem(new MenuItem { ShortcutChar = optionNo, Text = encoderPlugin.GetName(), ContextObject = encoderPlugin, ItemAction = new MenuItemAction(EncodeAction) }); optionNo++; } foreach (var encoderPlugin in decodersPluginManager.Plugins) { consoleMenu.AddItem(new MenuItem { ShortcutChar = optionNo, Text = encoderPlugin.GetName(), ContextObject = encoderPlugin, ItemAction = new MenuItemAction(DecodeAction) }); optionNo++; } }