I would like some information on options for allowing different versions of
assemblies to work together.
Example: assembly1v1 makes calls to some classes in assembly2v1
A new version of assembly2 comes out assembly2v2.
This has some new features in it.
I want assembly1v1 to be able to use assembly2v2 but not break, even though
it doesn't know about the new features in assembly2v2.
Then assembly1v2 comes out. It should be able to now use the new features in
assembly2v2.
Also assembly1v2 should be able to cope with assembly2v2 not being
available, and only assembly2v1 being installed.
Now think of 10 assemblies being released at different points, with no
guarantee as to which versions of assemblies might be installed in a given
environment, and they just need to be able to work together at whatever
functional level is available.
What would be the best way to implement this? I would like to understand the
options and pros and cons of each option.
Do I have to use reflection? Is the provider model useful here? Should I
just work with interfaces?
Thanks!