Здравствуйте, AndrewVK, Вы писали:
AVK>>>Твои предложения по представлению нереляционных данных.
V>>Иерархическая сруктура в памяти.
AVK>А XML DOM что, не иерархическая? Зачем велосипеды то изобретать?
А затем, что бы можно было подавать произвольную структуру в качестве источника данных. Если говоришь, что знаешь НЕТ, то напомню, что биндинг можно выполнять к произвольным публичным свойствам. И для этого не надо писать МОРЕ РУКОПИСНОГО ТЕКСТА, т.к. все средства для поддержки биндига уже есть. Указваешь просто объект и имя свойства. Для НЕТ не существует разницы, прибиндился ты к рекорду или к любой другой структуре. Для тебя это будет один и тот же код — одна строчка. Имена свойств (в случае рекордсета — это имена полей) беруться из шаблона.
Предположим, что мы имеем отчет, который выводит простой список телефонов. В нем всего 2 поля: (FullName, Phone).
Так вот, ты НЕ МЕНЯЯ НИЧЕГО можешь подать туда рекордсет из базы, или же свою структуру:
rpt.DataSource=new PhoneListItem[] { new PhoneListItem("Вася", "11-11-11"), new PhoneListItem("Петя", "22-22-22") };
Это, конечно, вырожденный пример, но показывает суть. Мы (приложение) сможем формировать произвольную структуру из произвольных классов в памяти, главное чтобы имена полей на отчете соответствовали публичным свойствам объектов в этой структуре (впрочем, это верно и для источника — рекордсета).
AVK>>>А зачем много форматов?
V>>Затем, что много ситуаций. Но как минимум 2 формата: бинарный и XML поддерживать надо.
AVK>Зачем? чтобы писать две версии генератора для разных форматов?
Ну, ЧУДАК ЧЕЛОВЕК!!!! Это мы .NET знаем?
Да в одной строке сериализуем модель отчета как XML, а в другой — как Binary!!! И считываем аналогично — по одной строке на формат — .NET все сама делает.
V>>IEnumerable, IDictionary, IDataRecord и т.д.
AVK>И т.д. там мало совсем.
а мне только IEnumerable достаточно!!! (хотя, можно подняться на "ступенечку", и ограничиться ICollection).
V>>>> Рефлекшен легко позволит это сделать.На любой внешний источник данных может "навешиваться" адаптер, приводящие данные к удобному внутреннему виду.
AVK>>>Это слишком сложно имхо.
Это биндинг, это одна строчка.
AVK>Не рассказывай мне что такое дотнет, я это хорошо представляю. Я вижу другое — море рукописных алгоритмов, которых можно избежать.
Мы их уже избежали.