Think about Mono for source code
Tim writes:
If you haven't already, though, I would recommend checking out Anakrino, an awesome open-source C# decompiler. It can be very useful to get insight into a .NET assembly, either to extend / specialize functionality or to debug weird issues. And sure, the source code generated isn't quite as good as the original - for example, MSIL doesn't keep local variable names, so you lose those - but it still does the trick.
I know for me it has proved useful on more than a few occasions.
A great resource for the source code of the standard components of .NET is Mono. They've already done the reverse engineering for us.
Check the Mono Class Libraries, a valuable resource for component writers!