powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
35 сообщений из 35, показаны все 2 страниц
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225622
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень странная ошибка вываливается иногда у клиента.
Я у себя на сервере добиться появления этой ошибки не могу.

Код: c#
1.
2.
3.
4.
5.
6.
7.
sql_com.CommandText = "SELECT Field1, Field2 FROM MyTable WHERE...
[...]
while (sql_rdr.Read())
{
	field1= Convert.ToString(DBNullIs(sql_rdr["Field1"], "")); // Вот тут вылетает - "System.IndexOutOfRangeException: Field1"
	field2 = Convert.ToString(DBNullIs(sql_rdr["Field2"], ""));
}



Field1 как вы видите выбирается в SQL-Запросе.
Впечатление такое что SQL-Запрос возвращает 0 записей, а ридер таки пытается что-то там прочитать.
Я другого объяснения не нахожу.
Вопрос в том: Как такое может быть или если не в этом дело, то в чём?
Спасибо.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225625
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234Впечатление такое что SQL-Запрос возвращает 0 записейгляньте профилером
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225629
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234, как reader создаётся?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225646
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Код: c#
1.
SqlDataReader sql_rdr = sql_com.ExecuteReader();
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225655
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПаганельM234Впечатление такое что SQL-Запрос возвращает 0 записейгляньте профилером
Во-первых у меня и ошибки то этой не появляется.
Во-вторых если даже никаких результатов не возвращается(это я симулировал), то while (sql_rdr.Read()) ничего читать не должно.
Или я не прав?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225664
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так?
Код: c#
1.
2.
3.
4.
while (sql_rdr.Read())
{
	field2 = Convert.ToString(DBNullIs(sql_rdr["Field2"], ""));
}
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225671
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234Я у себя на сервере добиться появления этой ошибки не могунадо обратиться к тестировщикам, пусть найдут как повторить
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225676
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :)
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225685
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, а что такое DBNullIs
?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225686
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельа так?
Код: c#
1.
2.
3.
4.
while (sql_rdr.Read())
{
	field2 = Convert.ToString(DBNullIs(sql_rdr["Field2"], ""));
}



Я не знаю. У меня всё работает. Хоть так хоть сяк.
Ладно, сейчас "обращусь к тестировщикам" в смысле пойду тестировать... ;)
Я думал может есть какая теория под это дело...
Может if (sql_rdr.HasRows) спасёт отца русской демократии?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225691
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельда, а что такое DBNullIs
?

Ничего страшного:

Код: c#
1.
2.
3.
4.
 public static object DBNullIs(object colValue, object defValue)
    {
        if (!Convert.IsDBNull(colValue)) return (colValue); else return (defValue);
    }
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225716
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :)

http://codearticles.ru/home/articleview/1383
Код: c#
1.
2.
3.
4.
5.
// IDataReader => IEnumerable<T>
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
    var employeesOfReader = mapper.Map<Employee>(reader as IDataReader);
}



На кой ляд какие-то еще педали? :)
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225732
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234skyANA,

Код: c#
1.
SqlDataReader sql_rdr = sql_com.ExecuteReader();

Хм. А команда случаем не singleton? Может параллельный запрос меняет текст команды? Может у Вас что-то static?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225747
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldevelopercooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :)

http://codearticles.ru/home/articleview/1383
Код: c#
1.
2.
3.
4.
5.
// IDataReader => IEnumerable<T>
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
    var employeesOfReader = mapper.Map<Employee>(reader as IDataReader);
}



На кой ляд какие-то еще педали? :)Предлагаете педали ТС поменять на Ваши педали?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225765
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :)

Это древний говнокод который был написан ажно в 2007 году на .Net 2.0 и который до сих пор проблем не вызывал.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225770
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПредлагаете педали ТС поменять на Ваши педали?
Если маппер - это педали, я могу тебе, разве что, тебе посочувствовать
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225807
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperskyANAПредлагаете педали ТС поменять на Ваши педали?
Если маппер - это педали, я могу тебе, разве что, тебе посочувствовать
Ну это смотря как посмотреть. Если по Фаулеру: Data Mapper , - то
1. Ваш маппер не является Data Mapper-ом по Фаулеру;
2. Что-то я не заметил в коде ТС доменных (бизнес) объектов.

Так что ему надо либо всё нафиг зарефакторить, либо оставить свои педали.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225810
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234cooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :)

Это древний говнокод который был написан ажно в 2007 году на .Net 2.0 и который до сих пор проблем не вызывал.Что насчёт синглтонов и статиков?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225826
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу это смотря как посмотреть. Если по Фаулеру: Data Mapper , - то
1. Ваш маппер не является Data Mapper-ом по Фаулеру;
Смотреть никуда не нужно, нужно почитать про такие известные мапперы, как AutoMapper и ExpressionMapper и сделать соответствующие выводы для задач преобразования экземпляров классов к различным типам.

skyANA2. Что-то я не заметил в коде ТС доменных (бизнес) объектов.
Маппер маппит экземпляр класса одного типа в другой. Он ничего не знает и не должен знать о доменных или не домменных объектах.

skyANAТак что ему надо либо всё нафиг зарефакторить, либо оставить свои педали.
Ему нужно убрать гавнокод и вставить одну строчку с маппером. Больше ему ничего делать не нужно.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225843
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕсли по Фаулеру: Data Mapper
Фаулер не дает библейское определение маппера, он просто его рассматривает применительно к БД. Что нам и говорит название главы:

...A layer of Mappers (473) that moves data between objects and a database while keeping them independent of each other and the mapper itself.

...You still need to transfer data between the two schemas, and this data transfer becomes a complexity in its own right. If the in-memory objects know about the relational database structure, changes in one tend to ripple to the other.

Мапперы же используется и в других задачах, никак не связанных с базами данных. Особенно вкусно они применяются в SOA ориентированных средах для трансфера объектов из одного состояния в другое. Так что немного глуповато звучит "Маппер по Фаулеру" ...
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225852
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper, у Фаулера есть маппер , а есть дата маппер . А теперь смотрим название Вашего рецепта: "Рецепт - DataMapper".
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225893
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloper, у Фаулера есть маппер , а есть дата маппер . А теперь смотрим название Вашего рецепта: "Рецепт - DataMapper".
1. Не вижу противоречий. DataMapper - это мой маппер с моим названием, которое я ему дал. Маппер для данных, данные могут быть какими угодно. Есть еще Expression маппер - так что, будем говорить о необходимости наличия Expression выражений в коде? Есть Auto маппер , тут вообще непонятно к чему оно относится - к автомобилям, наверное.
2. Ссылка на просто "Mapper" вообще левая, как я понял. Она не относится к задаче перемапливания свойств одного экземпляра на свойства другого. Поэтому, прежде чем пихать Фаулера куда ни попадя, сначала разберись с тематикой и контекстом применения
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225902
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper, дак и я не вижу противоречий. Я же писал, что Ваш маппер не является Data Mapper -ом по Фаулеру. Где тут противоречие?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225909
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloper, дак и я не вижу противоречий. Я же писал, что Ваш маппер не является Data Mapper -ом по Фаулеру. Где тут противоречие?
Противоречние в том, что (повторюсь):
1. Фаулер не дает библейское определение маппера, он просто его рассматривает применительно к БД .
2. Я так и не понял, почему мой маппер не является "дата меппером", о котором пишет Фаулер. Он может работать с любыми объектами, в том числе и доменными.
3. Ты решил понасиловать мне моск?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225934
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поковырял AutoMapper
Что то не могу понять зачем кеширование в нутрях происходит IDataReader - жирновато, ну да ладно.
а вот за это:
Код: c#
1.
2.
3.
  for (var i = 0; i < dataRecord.FieldCount; i++)
            {
                var propertyInfo = destinationType.GetProperty(dataRecord.GetName(i), BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance);


надо ругать, имхо если его привести в порядок кое где, будет намного быстрей и худей..
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38225955
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиЧто то не могу понять зачем кеширование в нутрях происходит IDataReader - жирновато, ну да ладно.
Всё правильно они делают, один раз получают свойство, а все последующие разы свойство достается из словаря.
Наподобие вот этого: Рецепт - Emit property set-get value (Алексей К писал, я подпилил немного)
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226039
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,
в том то и дело, никаких словарей я не увидел или на что то похожее типа этого
Код: c#
1.
2.
3.
4.
  static  class  PropertyInfoCashe<T> 
    {
       static  Lazy<List<PropertyInfo>> listPi=new Lazy<List<PropertyInfo>>(() => typeof (T).GetProperties().ToList());
    }
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226054
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,
Ну да бог с ним не велика безделица, свою написать на раз проблем нет, может не увидел.
В общем то и полез прозекцировать из за этого момента...
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226058
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, мне лениво изучать их исходники. Лучше возьми коллекцию их нескольких десятков млн элементов и потестрируй на скорость все три маппера. Emit должен всех порвать.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226064
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperEmit должен всех порвать.
Точно, как же я забыл про Emit. Вот он , дополнил коллекцию мапперов.

P.S. Но как по мне, лучше иметь свой класс маппера из пары строк кода, чем тянуть эти левые кодплексовские сборки.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226079
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot cooldeveloper]cooldeveloperP.S. Но как по мне, лучше иметь свой класс маппера из пары строк кода, чем тянуть эти левые кодплексовские сборки.
Тут полностью с тобой согласен, не велика важность в этих сборках, тем более если смотреть сточки зрения датамаппера
тянут они 90 процентов баласта.Самое главное принцип действия знать - быть вооруженным.
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226097
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степитянут они 90 процентов баласта.Самое главное принцип действия знать - быть вооруженным.
+1
Тем более реальная разница замечается на десятках миллионах элементов. Как часто ты маппишь такое кол-во данных? У меня еще ни разу таких задач не было. Максимум, несколько десятков тысяч, которые маппятся за секунду и того меньше.
Опять же, если нужна небольшая оптимизация и скорострельность, ее можно повысить процентов на 15% за счет кеширования и Emit доступа к свойствам. Просто берем и докручиваем этот Emit к своему мапперу. Лично пробовал, особо сильного профита я не получил, зато гавнокода добавилось немало. Сам зацени на эту жесть:
emit
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;

namespace Application.Emit
{
    public class EmitTypeInfo
    {
        public EmitTypeInfo(object obj)
        {
            Member = obj;
        }

        class EmitPropertyInfoCollection
        {
            public EmitPropertyInfo[] Items;
            public Dictionary<string, EmitPropertyInfo> ByName;
        }

        class CacheDictionary : Dictionary<Type, EmitPropertyInfoCollection>
        {

        }

        CacheDictionary Cache = new CacheDictionary();

        object Member;

        public IEnumerable<EmitPropertyInfo> GetProperties()
        {
            return GetPropertiesInternalCollection(Member.GetType()).Items;
        }

        public EmitPropertyInfo GetProperty(string propertyName)
        {
            EmitPropertyInfo result;

            if (GetPropertiesInternalCollection(Member.GetType()).ByName.TryGetValue(propertyName, out result))
            {
                return result;
            }
            else
            {
                return default(EmitPropertyInfo);
            }
        }

        EmitPropertyInfoCollection GetPropertiesInternalCollection(Type type)
        {
            lock (Cache)
            {
                EmitPropertyInfoCollection result;
                if (!Cache.TryGetValue(type, out result))
                {
                    var items = CreateEmitProperties(type).ToArray();
                    result = new EmitPropertyInfoCollection
                    {
                        Items = items,
                        ByName = items.ToDictionary(v => v.Property.Name)
                    };

                    Cache.Add(type, result);
                }

                return result;
            }
        }

        IEnumerable<EmitPropertyInfo> CreateEmitProperties(Type type)
        {
            var properties = type
                .GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .Where(v =>
                    (v.GetGetMethod() == null || v.GetGetMethod().GetParameters().Length == 0) &&
                    (v.GetSetMethod() == null || v.GetSetMethod().GetParameters().Length == 1)
                );

            foreach (var property in properties)
                yield return new EmitPropertyInfo(
                    property,
                    CreatePropertyGet(property),
                    CreatePropertySet(property)
                );
        }

        Func<object, object> CreatePropertyGet(PropertyInfo pi)
        {
            var getMethod = pi.GetGetMethod();

            if (getMethod == null)
                return src =>
                {
                    throw new InvalidOperationException(
                        string.Format(
                            "Getter for property {0}.{1} not found",
                            pi.DeclaringType.FullName,
                            pi.Name
                        )
                    );
                };

            var method = new DynamicMethod(GetDynamicMethodName(pi, "Get"), typeof(object), new[] { typeof(object) }, pi.Module);
            var il = method.GetILGenerator();

            il.Emit(OpCodes.Ldarg_0);
            if (pi.DeclaringType.IsValueType)
                il.Emit(OpCodes.Unbox, pi.DeclaringType);
            else
                il.Emit(OpCodes.Castclass, pi.DeclaringType);

            il.EmitCall(OpCodes.Callvirt, getMethod, null);

            if (pi.PropertyType.IsValueType)
                il.Emit(OpCodes.Box, pi.PropertyType);

            il.Emit(OpCodes.Ret);

            return (Func<object, object>)method.CreateDelegate(typeof(Func<object, object>));
        }

        Action<object, object> CreatePropertySet(PropertyInfo pi)
        {
            var setMethod = pi.GetSetMethod();

            if (setMethod == null)
                return (src, value) =>
                {
                    throw new InvalidOperationException(
                        string.Format(
                            "Setter for property {0}.{1} not found",
                            pi.DeclaringType.FullName,
                            pi.Name
                        )
                    );
                };

            var method = new DynamicMethod(
                 GetDynamicMethodName(pi, "Set"),
                 typeof(void),
                 new[] { typeof(object), typeof(object) },
                 pi.Module
             );

            var il = method.GetILGenerator();

            il.Emit(OpCodes.Ldarg_0);
            if (pi.DeclaringType.IsValueType)
                il.Emit(OpCodes.Unbox, pi.DeclaringType);
            else
                il.Emit(OpCodes.Castclass, pi.DeclaringType);

            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Unbox_Any, pi.PropertyType);

            il.EmitCall(OpCodes.Callvirt, setMethod, null);

            il.Emit(OpCodes.Ret);

            return (Action<object, object>)method.CreateDelegate(typeof(Action<object, object>));
        }

        string GetDynamicMethodName(PropertyInfo pi, string suffix)
        {
            return string.Join("/", typeof(EmitTypeInfo).FullName, pi.DeclaringType.FullName, pi.Name, suffix);
        }
    }

    public class EmitPropertyInfo
    {
        public PropertyInfo Property { get; private set; }
        public Func<object, object> GetValue { get; private set; }
        public Action<object, object> SetValue { get; private set; }

        public EmitPropertyInfo(PropertyInfo property, Func<object, object> getValue, Action<object, object> setValue)
        {
            Property = property;
            GetValue = getValue;
            SetValue = setValue;
        }
    }
}



Итого, если так важный эти эмитовские копейки, допиливаем. Мне и на классической рефлексии хорошо живется :)
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226323
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиcooldeveloper,
в том то и дело, никаких словарей я не увидел или на что то похожее типа этого
Код: c#
1.
2.
3.
4.
  static  class  PropertyInfoCashe<T> 
    {
       static  Lazy<List<PropertyInfo>> listPi=new Lazy<List<PropertyInfo>>(() => typeof (T).GetProperties().ToList());
    }


А пардон, посыпаю голову пеплом, скачал исходники - более понятно чем рефлектор.
реализации Автомаппера идет через Emit кешируется делегат под получаемый тип.
все вроде ок..
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226328
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиболее понятно чем рефлектор
Ты рефлектором смотрел код?
...
Рейтинг: 0 / 0
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
    #38226382
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,
ну а чо, решил быстро пробежаться ))
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]