public void Initialize(string extension) { var factory = new EngineParserFactory(); var engine = factory.Instantiate(extension); var currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var files = Directory.GetFiles(currentPath, "Idunn.*.dll"); var factories = new List <object>(); foreach (var file in files) { var assembly = Assembly.LoadFile(file); var potentials = assembly.GetTypes().Where(t => typeof(IParserRegister).IsAssignableFrom(t)); if (potentials.Count() == 1) { var effective = potentials.Single(); var register = effective.GetConstructor(new Type[0]).Invoke(new object[0]); Initialize(register as IParserRegister, engine); } else { System.Console.BackgroundColor = ConsoleColor.Yellow; System.Console.WriteLine($"Warning: the file {file} doesn't contain any parser. The types defined in this dll won't be loaded by Idunn and will be skipped."); System.Console.ResetColor(); } } }
public void Initialize(IParserRegister register, string extension) { var factory = new EngineParserFactory(); Initialize(register, factory.Instantiate(extension)); }