views:

302

answers:

5

Up until yesterday, I had no idea iTextSharp included a full set of barcode classes. I discovered this through a chance answer to a question here on SO. Although I'd used iTextSharp in an earlier incarnation for generating some overlay text on a template PDF, I'd never fully explored the library, nor do I even recall Barcode support being available at the time.

So I ask you, what are some other .NET framework libraries that you know of that have hidden gems or features that are useful outside of the core purpose of the library?

Clarification: this question is specifically targeted to frameworks outside of the .NET BCL.

A: 

System.IO.Path - can be used to build and analyse string and get file name, directory and drive. I always amuses to see someone implement that functionality again

Dror Helper
Gotta love the .NET Framework. :3
Sergio Tapia
The question is for libraries outside of the core of .NET mate.
Kyle Rozendo
@Kyle, yep, there's already a question regarding hidden features of the BCL / C# itself.
Chris
Please don't vote this one up, its the number one answer on the number two question on SO--http://stackoverflow.com/questions/9033/hidden-features-of-c and really isn't that hidden or awesome compared to other useful classes in the framework.
Will
+2  A: 

OpenNetCF has an FFT class (for doing Fast Fourier Transforms). It qualifies as a "hidden gem" because OpenNetCF is intended for Windows Mobile devices, and thus isn't necessarily the place you'd normally go looking for DSP code.

MusiGenesis
+4  A: 

The entire text editing component in SharpDevelop is re-usable in your own applications. See this article for more information.

In fact the whole SharpDevelop project is full of useful features such as regular expression support, profiling, debugger, add-ins etc, that you can learn just by looking at the source and/or referencing assemblies in your projects.

Ash
+2  A: 

FileSelector in DotNetZip - allows you to select files based on a boolean logic, that considers name; file size; created, modified or accessed time; file attributes.

eg,

Select all files modified in May:

var selector = new FileSelector("mtime >= 2009-05-01 and mtime <= 2009-05-31");
var files = selector.SelectFiles("c:\\my Documents");

Select all files larger than 100k, and modified in May:

var selector = new FileSelector("mtime >= 2009-05-01 and mtime <= 2009-05-31 and size > 100k");
var files = selector.SelectFiles("c:\\my Documents");

Select all .doc files larger than 100k, modified in May:

var selector = new FileSelector("(name = *.doc) and (mtime >= 2009-05-01) and (mtime <= 2009-05-31) and (size > 100k)");
var files = selector.SelectFiles("c:\\my Documents");
Cheeso
Are the variables, like mtime, from a list of preset name or do they come from Windows internal column name? For example, could I be able to filter on any columns that is available on Vista?
Pierre-Alain Vigeant
There is a preset list: name, mtime, ctime, atime, attributes, size. I think that's it. What else do you need?
Cheeso
A: 

For WPF, WPFDocking. Such a simple way to achieve an awesome tab control (and cheap at $150 license)

For WinForms, DockPanelSuite. Same guy who wrote the WPFDocking, but this one is free, and seems to be slightly stronger (it was released before WPFDocking). Again, unbelievably simple to use & gives you awesome visual studio style tabs.

Highly recommend both for any application that has a tab control (very simple to convert existing tabs to use the controls).

mrnye
Not exactly a hidden gem outside the core purpose of the library if it *is* the core purpose of the library though.
Chris