protected string DumpMetaData( BitmapMetadata _Root, string _Tab ) { string Result = ""; foreach ( string Meta in _Root.AsEnumerable<string>() ) { Result += _Tab + Meta; object Value = _Root.GetQuery( Meta ); if ( Value is BitmapMetadata ) { // Recurse _Tab += "\t"; Result += "\r\n" + DumpMetaData( Value as BitmapMetadata, _Tab ); _Tab = _Tab.Remove( _Tab.Length-1 ); } else { // Leaf Result += " = " + Value + "\r\n"; } } return Result; }