// загрузка генераторов из плагинов private void LoadPluginGenerators() { string pluginsPath = pathNavigator.GetPluginsDirectory(); DirectoryInfo pluginDirectory = new DirectoryInfo(pluginsPath); if (!pluginDirectory.Exists) { pluginDirectory.Create(); } string[] pluginFiles = Directory.GetFiles(pluginsPath, pathNavigator.GetPluginExtension()); Console.WriteLine("Генераторы из плагинов"); foreach (var file in pluginFiles) { Assembly asm = Assembly.LoadFile(file); // IGenerator Type[] pluginGeneratorsTypes = asm.GetTypes().Where(lambdaGenerator.Compile()).ToArray(); IGenerator generator; foreach (Type type in pluginGeneratorsTypes) { generator = asm.CreateInstance(type.FullName) as IGenerator; pluginGeneratorsDictionary.TryAdd(generator.GetObjectType(), generator); Console.WriteLine(type.Name); } // ICollectionGenerator Type[] pluginCollectionGeneratorsTypes = asm.GetTypes().Where(lambdaCollectionGenerator.Compile()).ToArray(); ICollectionGenerator collectionGenerator; foreach (Type type in pluginCollectionGeneratorsTypes) { collectionGenerator = asm.CreateInstance(type.FullName) as ICollectionGenerator; pluginCollectionGeneratorsDictionary.TryAdd(collectionGenerator.GetCollectionType(), collectionGenerator); Console.WriteLine(type.Name); } } }