public MainForm() { InitializeComponent(); foreach (KeyValuePair <string, Type> pair in typeDictionary) { classBox.Items.Add(pair.Key); } foreach (KeyValuePair <string, AbstractSerializer> pair in serializers) { serList.Items.Add(pair.Key); } string[] files = Directory.GetFiles(".", "*.dll"); foreach (string path in files) { Type[] types = null; var assembly = Assembly.LoadFrom(path); if (assembly != null) { types = assembly.GetTypes(); foreach (Type type in types) { if (type.IsSubclassOf(typeof(AbstractPlugin))) { AbstractPlugin plugin = Activator.CreateInstance(type) as AbstractPlugin; string name = plugin.GetName(); plugins.Add(name, plugin); pluginsList.Items.Add(name); } } } } }