C# solution without dynamic

No fancy-shmancy dynamics here.  Works all the way down to .NET 2.0 probably not on mono