Why I hate internals, yet again

time to read 1 min | 118 words

So here I am searching for an implementation of a WeakHashtable, and imagine my surprise when I find out that the BCL already has one such implementation. Imagine my lack of surprise to find that System.ComponentModel.WeakHashtable is internal, thus rendering it near useless to me.So annoying, frustrating and irritating.       
Oh, and as if it is not enough, it appears that there are two implementation of WeakHashtable in the BCL. In two different assemblies (System and System.Windows.Forms).
From browsing the code, it looks like they just copy/paste the code, instead, you know, recognizing that this is an actual need and exposing this.