April 10, 2002 tools

.NET CollectionGen

[Note: As of 5/5/03, the functionality of CollectionGen has been sucked into Eric Smith’s CodeSmith. I asked Eric to take on these features because CodeSmith does all of what CollectionGen does and more. All new feature requests/bug reports should go his way.]

CollectionGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe collections. As it turns out, I did almost none of the work. Jon Flanders figured out how to add a custom tool. Shawn Van Ness implemented the template for type-safe collections. I just put it together.

CollectionGen is an add-on to generate code for type-safe collections until we have templates in C# (likely) and VB (unlikely). The benefit of a type-safe collection, of course, is that you can use it without having to cast items to and from objects. Also, Shawn has been very careful to implement a collection class that is very efficient for both reference types and value types.

Once you’ve setup it up and defined your collections in a collection definition file in your project, you’ll have type-safe collection classes generated as part of your design-process, as shown here:

Figure 1: collections.xml collection definition file


Figure 2: collections.xml and generated collection.cs implementation file


Figure 3: CollectionGen custom tool add-in associated with the collections.xml file


Figure 4: Generate type-safe collection code


Also, Atif Aziz used some of my custom tool code and built a generic VS.NET code generator shim that allows you to build a code generator that plugs into VS.NET by implementing a single method.