Mir gefällt die Entkopplung von Funktionalitäten, wie sie über OnGetMonthInfo() möglich wird.
Zu der Typprüfung: Ich würde einfach eine
Exception werfen, wenn sich der Feldtyp beim ersten Zugriff als falsch herausstellt. Die Prüfung sollte auf keinen Fall innerhalb einer Schleife über potentiell Tausenden von Datensätzen statt finden.
Statt DataSet.First() bietet sich vielleicht DataSet.Locate() an. So könntest du in einer riesigen Tabelle Laufzeitvorteile gewinnen. Und nicht das Bookmarking vergessen.
Gute Nacht