I, like most developers out there, have accumulated a set of classes and utility functions that have been used repeatedly in multiple projects throughout my career.  This code has followed me around in various forms; sometimes by copying the files directly to new projects, and other times by creating a shared DLL that’s referenced as a dependency instead.  Whether the files were copied in their own folder or compiled into a DLL, the question always remained of "what should these be called"?  They’ve gone by many names, such as "common", "shared", "utilities" and even just "utils".  I’ve never been satisfied with any of these, and they don’t convey the meaning of what I like to call "stuff that should have been in System.dll".  One day, after looking through the .NET base class library, I noticed that some of the most basic types in the System namespace (like Action and Func) are not in System.dll or mscorlib, but are actually defined in System.Core.dll.  So in the same vein I decided to name my library "System.More" with all of the same expectations thereof.  I stripped out all of the "utility"-like classes and methods, including implementations of algorithms such as traveling salesman and huffman coding, because I couldn’t see those belonging in System.dll.  Instead, System.More contains classes like Tuple and PriorityQueue that are defined in namespace System and System.Collections.Generic respectively.  This way, new projects can simply add a reference to System.More.dll (just like adding one to System.Core.dll) to get all of the new classes and extensions easily and elegantly.

Comments (1)

  1. Kael Rowan says:

    In the same vein as System.More, I’ve also created a Windows Presentation Foundation counterpart called Presentation.More …