Grausamen Bug behoben

Den schreckliche No-Go Bug hier in meinem C# CMS habe ich endlich gefunden. Ich mache das nämlich mit dem vermeintlich prima simplen Data-Binding Mechanismus. Dagegen ist prinzipiell zwar nichts einzuwenden, aber durch die Komplexität dieser schwergewichtigen Objekte gibt es doch ein paar böse Fallstricke. So habe ich z.B. einen Handler, der den geschriebenen Text in ein Datenbank-freundliches Byte-Array konvertiert und vice versa. Etwa so:

private void b_Format(object sender, ConvertEventArgs e) {
      if(e.DesiredType != typeof(string)) return;
      if(e.Value == DBNull.Value) {       
        return;
      }
      byte[] bval = (byte[]) e.Value;            
      e.Value = System.Text.Encoding.Default.GetString(bval,0,bval.Length);
}

Der Witz liegt nun darin, daß man auch den DBNull Wert testet! Falls man das nicht macht, geht die Funktion schief und die Position des CurrencyManagers wird nie aktualisiert. Es gibt aber auch keine Exception, man hat also keinen Plan, was da hinter den Kulissen passiert. Das sind halt so die finsteren Ecken von .NET.

Leave a Reply