Бага с TypeAccessor
От: ili Россия  
Дата: 17.02.11 11:20
Оценка: 64 (1)
Где-то между ревизией 952 и текущей сломалась возможность пользовать тайпаксессор интерфейсов для вытаскивания полей объектов, унаследованных от этих интерфейсов

При том валится каким-то жутким исключением, то "System.EntryPointNotFoundException : Точка входа не найдена" то "ExecutionEngineException"

тест:
        [MapField("MasterId", "Master.MasterId")]
        public interface IMaster2
        {
            [Relation]
            Master2 Master
            {
                get;
                set;
            }
        }
        [TableName("Master")]
        public abstract class Master2
        {
            [PrimaryKey]
            public abstract int           MasterId  {get; set;}
            [Relation(Destination=typeof(Detail2))]
            public abstract List<Detail2> Details   {get; set;}
            public abstract string        Name      {get; set;}
        }

        [TableName("Detail")]
        public abstract class Detail2 : IMaster2
        {
            [PrimaryKey, MapField("Id")]
            public abstract int             DetailId   {get; set;}

            public abstract Master2 Master
            {
                get;
                set;
            }

        }


        [Test]
        public void InterfaceTest()
        {
            var ta = TypeAccessor<IMaster2>.Instance;
            var ta2 = TypeAccessor<Detail2>.Instance;
            var d2 = TypeAccessor<Detail2>.CreateInstance();
            
         
            var m = ta2["Master"].GetValue(d2); // OK
            Assert.IsNotNull(m);


            m = ta["Master"].GetValue(d2); // Exception 
            Assert.IsNotNull(m);
        }
Re: Бага с TypeAccessor
От: IT Россия linq2db.com
Дата: 17.02.11 15:13
Оценка: 12 (1)
Здравствуйте, ili, Вы писали:

ili>Где-то между ревизией 952 и текущей сломалась возможность пользовать тайпаксессор интерфейсов для вытаскивания полей объектов, унаследованных от этих интерфейсов


В файле Source\TypeBuilder\Builders\TypeAccessorBuilder.cs строчку 384:

if (!methodType.IsClass)

заменить на

if (methodType.IsValueType)

Фикс будет позже.

ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Бага с TypeAccessor
От: andrex Украина  
Дата: 17.02.11 15:43
Оценка:
Здравствуйте, IT, Вы писали:

IT>ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?


Вот http://www.selenic.com/mercurial/hg.1.html#bisect
Похоже или в git под этим что то другое подразумевается?
Я бы изменил мир — но Бог не даёт исходников...
Re[3]: Бага с TypeAccessor
От: IT Россия linq2db.com
Дата: 17.02.11 15:50
Оценка:
Здравствуйте, andrex, Вы писали:

IT>>ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?


A>Вот http://www.selenic.com/mercurial/hg.1.html#bisect

A>Похоже или в git под этим что то другое подразумевается?

Оно. А из тортилки доступно?
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Бага с TypeAccessor
От: fddima  
Дата: 17.02.11 16:30
Оценка:
Здравствуйте, IT, Вы писали:

IT>Оно. А из тортилки доступно?

Что-то есть, правда как именно оно работает в тортилке — не пробовал.
Re[2]: Бага с TypeAccessor
От: ili Россия  
Дата: 18.02.11 06:34
Оценка:
Здравствуйте, IT, Вы писали:

IT>Фикс будет позже.


IT>ЗЫ. Всё-таки git — вещь. Проблемная ревизия нашлась за пять минут. Интересно, в меркуриал есть bisect?


может git, конечно и вещь, нооо, такого он не отловит

внёс исправление. теперь этот наш тест валится так:
System.AccessViolationException : Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

Re[3]: Бага с TypeAccessor
От: IT Россия linq2db.com
Дата: 18.02.11 14:24
Оценка:
Здравствуйте, ili, Вы писали:

ili>внёс исправление. теперь этот наш тест валится так:

ili>System.AccessViolationException : Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

Странно. У меня твой тест нормально проходит.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Бага с TypeAccessor
От: ili Россия  
Дата: 20.02.11 15:33
Оценка:
Здравствуйте, IT, Вы писали:

IT>Странно. У меня твой тест нормально проходит.


в понедельник проверю
Re[5]: Бага с TypeAccessor
От: ili Россия  
Дата: 21.02.11 11:55
Оценка:
Здравствуйте, ili, Вы писали:

ili>в понедельник проверю


проверил, все гут, отрицание забыли убрать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.