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