public void Load(string pluginsDir) { DirectoryInfo pluginsDirInfo = new DirectoryInfo(pluginsDir); List <FileInfo> pluginList = pluginsDirInfo.GetFiles("*.dll").ToList(); int pluginIndex = 0; pluginList.ForEach(x => { Assembly assembly = Assembly.LoadFile(x.FullName); Type[] types = assembly.GetTypes(); List <Type> pluginTypes = types.Where(p => typeof(IDummyInstructions).IsAssignableFrom(p) && !p.IsInterface && p.IsClass && !p.IsAbstract).ToList(); foreach (Type t in pluginTypes) { IDummyInstructions plugin = (IDummyInstructions)assembly.CreateInstance(t.FullName); DummyInsMap.Add(t.Name, plugin); pluginIndex++; } }); }
public List <string> Compiler(List <string> Codes) { List <string> destCodes = new List <string>(); for (int i = 0; i < Codes.Count; i++) { string[] FirstParse = Codes[i].ToLower().Split(' '); IDummyInstructions di = null; if (DummyInsMap.TryGetValue(FirstParse[0], out di)) { di.Input(Codes[i], Codes, i); destCodes.AddRange(di.Result()); } else { destCodes.Add(Codes[i].ToLower()); } } return(destCodes); }