IEnumerable<T> хочется
От: Блудов Павел Россия  
Дата: 29.12.05 06:58
Оценка: +2
Сразу оговорюсь: IEnumerable как бесплатное приложение к IList меня вполне устраивает.
Разница в том, что в случае с реальным енумератором можно не дожидатья окончания загрузки данных с сервера.
Т.е. классический пример распихивания деталей по заказам будет выглядеть так:

using (IEnumerator<Detail> details = Map.DataReaderToEnumerable<Detail>(readerDetail).GetEnumerator())
if (details.MoveNext())
{
    foreach (Order order in Map.DataReaderToEnumerable<Order>(readerOrder))
    {
        while (details.Current.OrderId == order.Id)
        {
            order.Details.Add(details.Current);
            if (!details.MoveNext())
            {
                break;
            }
        }
    }
}


У нас в проекте есть пара мест, где клиенту приходит с сервера многомерный массив float'ов (c дырками), в виде
index1, index2, .... indexN, value
index1, index2, .... indexN, value


Который раскладывается в реальный массив, т.е. данные получаемые с сервера ну совсем не похожи на те,
что используются внутри программы. Вот тут IEnumerable очень к месту — получили IDataReader с сервера,
поматросили и сразу бросили.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: IEnumerable<T> хочется
От: IT Россия linq2db.com
Дата: 30.12.05 04:35
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Который раскладывается в реальный массив, т.е. данные получаемые с сервера ну совсем не похожи на те,

БП>что используются внутри программы. Вот тут IEnumerable очень к месту — получили IDataReader с сервера,
БП>поматросили и сразу бросили.

Про поматросил и забросил понял, про что надо сделать не уверен
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: IEnumerable<T> хочется
От: Блудов Павел Россия  
Дата: 30.12.05 07:38
Оценка:
Здравствуйте, IT, Вы писали:

IT>Про поматросил и забросил понял, про что надо сделать не уверен


Т.е. уверен что не надо делать? А почему? Какие-то неочевидные грабли могут обьявиться?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: IEnumerable<T> хочется
От: IT Россия linq2db.com
Дата: 30.12.05 12:52
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

IT>>Про поматросил и забросил понял, про что надо сделать не уверен


БП>Т.е. уверен что не надо делать? А почему? Какие-то неочевидные грабли могут обьявиться?


Я не совсем понял что именно надо сделать.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: IEnumerable<T> хочется
От: Блудов Павел Россия  
Дата: 03.01.06 06:34
Оценка:
Здравствуйте, IT, Вы писали:

IT>Я не совсем понял что именно надо сделать.


Поменять list.Add() на yeld return. Давай я сам прикину как это можно сделать,
и если у меня что-то получится без тотального переделывания всего и вся, я сюда
закину список изменений.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: IEnumerable<T> хочется
От: Блудов Павел Россия  
Дата: 23.01.06 02:44
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>и если у меня что-то получится без тотального переделывания всего и вся, я сюда

БП>закину список изменений.

Получилось только превращением функции MapSourceListToDestinationList в объект, с розрушением всего и вся.

Зато мне пришла в голову идея получше. Всё тоже самое можно сделать через делегаты.

    public delegate void MapDelegate<T>(T o);

    public     static class Map
    {
        public static void EnumerateDataReader<T>(IDataReader reader, MapDelegate<T> td)
        {
            // you know
        }
    }


Тогда можно будет делать так:

        List<Person> ll = new List<Person>();
        Map.EnumerateDataReader<Person>(dr, delegate(Person item){ /*поматросили*/ ll.Add(item); /*бросили*/ });
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: IEnumerable<T> хочется
От: IT Россия linq2db.com
Дата: 23.01.06 05:04
Оценка: 7 (1)
Здравствуйте, Блудов Павел, Вы писали:

Я добавил виртуальные методы для создания различных типов мапперов, в том числе CreateDataReaderMapper в котором можно вернуть свою реализацию DataReaderMapper. Такой вариант не устроит?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: IEnumerable<T> хочется
От: Блудов Павел Россия  
Дата: 23.01.06 07:58
Оценка:
Здравствуйте, IT, Вы писали:

IT>Я добавил виртуальные методы для создания различных типов мапперов, в том числе CreateDataReaderMapper в котором можно вернуть свою реализацию DataReaderMapper. Такой вариант не устроит?


Вполне. Буду посмотреть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.