Practical .NET2 and C#2: Harness the Platform, the Language, the Framework