Я работаю с существующей объектной структурой, которая использует специальные значения для представления NULL для примитивов int, DateTime, long. Данные, содержащие эти значения, добавляются в DataTable и отображаются в сторонних элементах управления, таких как XtraGrid.
Все хорошо, кроме случаев, когда к данным применяются агрегаты. В этом случае, очевидно, специальные значения обрабатываются вместо записей NULL.
Так что я думаю, что лучшее решение - отобразить значения в / из DBNull при помещении в DataRow. Я думал о создании подклассов DataTable и DataRow, но базовые классы не позволяют переопределять методы доступа.
Я мог бы добавить дополнительные функции Get / Set к подклассам, но это полагалось на то, что они не будут использоваться. Я мог бы добавить статические вспомогательные функции вместо подклассов, но это та же проблема.
Есть ли более элегантное решение?
Обновление
Агрегацию выполняет сама сетка, поскольку она имеет гибкие элементы управления, позволяющие пользователю определять итоги во время выполнения. Поэтому я думаю, что единственное реальное решение - каким-то образом отобразить в / из DBNull, просто ища элегантный способ сделать это.