In the process of making my media player, which is always changing, I wanted to add a plugin system to my player. One of the problems i always face is adding new features. Its not that i cant add them but i forget about them and they never get done. So to alleviate that i implemented a plugin system.
It loads the dlls dynamically and i needed to figure out how to see if a class implemented the interface for the plugin, so that i could load only the ones who implment the interface in and i came across this jewel.
Type.IsAssignableFrom(type) is the piece of code that allowed for this to work correctly. heres snippet.
Dim assm As Assembly = Assembly.LoadFrom(dlllocation) For Each assmtype As Type In assm.GetTypes If GetType(PluginContainer.IPlugin).IsAssignableFrom(assmtype) AndAlso Not assmtype.IsAbstract Then ComboBox1.Items.Add(assmtype.FullName) End If Next
With this i was able load the dll, get all the classes and the see if any of them implement the interface. if they do then you can just show those and then for me i load them up to be used in the media player later. You can do anything you want with it.