I'm guessing that you're actually declaring two different interfaces in the two different projects. Just because they have the same name and members doesn't make them the same type. Check out the attached solution. Note that the interface is defined in a third assembly that both the other two must reference. Both the application and the library you're loading dynamically must refer to the same interface.
Ha!
Thanks for that. That makes complete sense now, after a good night's sleep!
Would I be correct in assuming that this is where a project can take on a whole new level of complexity, and where all of the Versioning aspects I have been ably to ignore are now going to begin mattering in a big way?
On the one hand, I feel less safe creating a monster project dependent upon external libraries. On the other hand, my project is GOING to be quite complex, and there are several areas in which discrete libraries of shared objects makes sense.
I guess my question to anyone reading this is, should a relative novice venture into this area?