The Exception.GetType() answer

Lots of good feedback and ideas… but here is the answer I got from the developers here..

Well, as with many odd things in the framework, it has to do with ComInterop; specifically ComInterop and backwards compatibility. Don’t get me wrong, I love the features COM interop gives, but I don’t like its effect on the public surface area of the framework. This little gem comes from the _Exception interface which Exception implements as of Whidbey. In fact many of the COMVisible types in the BCL that had members added to them implement a _Xxx interface with just those members that were introduced in V1.0. Note that class interfaces include not only all public methods on the class but all public methods on parent classes as well (such as System.Object). This was done to preserve backward compatibility with COM clients that worked against V1.0.