Easy creation of code generators in Visual Studio 2008
I am a big fan of the DRY principle. This means that whenever I can do something that can be reused with minimal or no effort, I try to do it. Recently I’ve started developing a REST framework for our projects, which is not based on WCF (will blog about this too). One of the most problematic areas is how to create service proxies easily without having to duplicate loads of code, but at the same time maintain maximum flexibility. After going through several options, the most attractive is creating a Visual Studio custom code generator.
Since there are almost no resources (and the existing ones are very blurry) I’ve decided to create a series of blogs that will be a guide to creating custom code generators, followed by some other posts with real examples and solutions to problems.
The series is divided into four parts:
Part I (this one) – creating a Visual Studio Package
Part II – creating and registering a code generator
Part III – generating code & debugging
Part IV - creating the setup project and deploying the package
*DISCLAIMER* - Even if everybody is in the new VS2010 hype, I still think there are a lot of developers that are and will be working in VS2008 for a while.
Executing actions on the UI thread
When working with frameworks like Silverlight, WPF or Windows Forms you often encounter the need to ensure a piece of code runs on the UI thread. Below, I present a clean way to do this using the SynchronizationContext class.
Creating a type-safe implementation of the INotifyPropertyChanged interface
When working with Silverlight two-way binding (and not only there) you need to implement the INotifyPropertyChanged interface in order to notify any observers that the property values of the object have changed.
Some useful extension methods
The class at the end of this post contains some extension methods that I commonly use in my code:
- IDictionary<TKey, TValue>.GetValueOrDefault
- IEnumerable<T>.ToHashSet
- IEnumerable<T>.ToJoinedString