Line | |
---|
1 |
|
---|
2 | using System;
|
---|
3 | using System.Collections.Generic;
|
---|
4 | using System.IO;
|
---|
5 | using System.Linq;
|
---|
6 | using System.Reflection;
|
---|
7 | using HeuristicLab.PluginInfrastructure;
|
---|
8 |
|
---|
9 | namespace HeuristicLab_33.Tests {
|
---|
10 | internal static class PluginLoader {
|
---|
11 | public const string AssemblyExtension = ".dll";
|
---|
12 | public static List<Assembly> pluginAssemblies;
|
---|
13 |
|
---|
14 | static PluginLoader() {
|
---|
15 | foreach (string path in Directory.EnumerateFiles(Environment.CurrentDirectory)
|
---|
16 | .Where(s => s.EndsWith(AssemblyExtension)))
|
---|
17 | Assembly.LoadFrom(path);
|
---|
18 |
|
---|
19 | pluginAssemblies = AppDomain.CurrentDomain.GetAssemblies().Where(IsPluginAssembly).ToList();
|
---|
20 | }
|
---|
21 |
|
---|
22 | private static bool IsPluginAssembly(Assembly assembly) {
|
---|
23 | return assembly.GetExportedTypes()
|
---|
24 | .Where(t => typeof(IPlugin).IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface).Any();
|
---|
25 | }
|
---|
26 | }
|
---|
27 | }
|
---|
Note: See
TracBrowser
for help on using the repository browser.