Scott Hanselman has a good explanation for the "unable to cast type A to type A" situation , with an example that recreates the problem. A very useful article to read to make hell just a little bit cooler.
I'll be the first to admit that I was never a COM programmer, so I had never experienced COM's original DLL hell . From what I hear, it was really gruesome. No standard in DLL versioning, programs overwriting each other's DLLs, and generally the kind of chaos in which stuff don't work and you have no idea what's wrong. .NET's assemblies, with their standardized naming and versioning, have definitely made our lives easier. Once we have a DLL, we know exactly what version it, and what version of other...