Dupe: http://stackoverflow.com/questions/411906/c-net-design-flaws#411919
When I learnt the .NET Framework, I was pleased with the direction Microsoft was/is taking with their application development vision. There was a great sense of enjoyment and excitement developing on the .NET platform, with some areas delivering truly impressive concepts (like ASP.NET). On a whole, I am very happy to be a .NET developer, but I believe to possess an impartial opinion, I should learn to identify weaknesses in the design of the CLR and BCL models.
What are some weaknesses you have encountered, be it in the CLR or BCL classes or the language compilers, and have formulated workarounds to avoid having to use the commonly-practiced methods? These are not mistakes committed by end-developers, but what you consider "mistakes" by the Microsoft designers/developers.
Some examples include