public static Type[] LoadTypesFromPlugins(Preferences preferences) { var config = new CodeGeneratorConfig(); config.Configure(preferences); var resolver = new AssemblyResolver(AppDomain.CurrentDomain, config.searchPaths); foreach (var path in config.plugins) { resolver.Load(path); } return(resolver.GetTypes()); }
public static CodeGenerator CodeGeneratorFromPreferences(Preferences preferences) { var config = new CodeGeneratorConfig(); config.Configure(preferences); var types = LoadTypesFromPlugins(preferences); var dataProviders = GetEnabledInstances <ICodeGeneratorDataProvider>(types, config.dataProviders); var codeGenerators = GetEnabledInstances <ICodeGenerator>(types, config.codeGenerators); var postProcessors = GetEnabledInstances <ICodeGenFilePostProcessor>(types, config.postProcessors); configure(dataProviders, preferences); configure(codeGenerators, preferences); configure(postProcessors, preferences); return(new CodeGenerator(dataProviders, codeGenerators, postProcessors)); }