Reflection & Emit & FieldAccessException
От: prVovik Россия  
Дата: 29.06.08 08:43
Оценка:
Всем привет.

Есть сборка, в которой определен internal класс с публичным полем. Объект этого класса передается другой сборке, которая читает публичное поле через Reflection. Все работает нормально. Но если то же самое сделать через Emit, то вылетает FieldAccessException. В связи с этим два вопроса:
1) Почему так происходит (в смысле почему рефлекшен работает, а эмит нет)?
2) Как бороться?
лэт ми спик фром май харт
reflection emit fieldaccessexception
Re: Reflection & Emit & FieldAccessException
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.08 12:44
Оценка: 4 (1)
Здравствуйте, prVovik, Вы писали:

V>1) Почему так происходит (в смысле почему рефлекшен работает, а эмит нет)?


Потому что JIT выполняет верификацию кода перед компиляцией.

V>2) Как бороться?


Если версия фреймворка >= 2.0, то см. атрибут InternalsVisibleTo
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Reflection & Emit & FieldAccessException
От: prVovik Россия  
Дата: 29.06.08 12:47
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, prVovik, Вы писали:


V>>1) Почему так происходит (в смысле почему рефлекшен работает, а эмит нет)?


AVK>Потому что JIT выполняет верификацию кода перед компиляцией.


Исключение вылетает во уже во время работы.

V>>2) Как бороться?


AVK>Если версия фреймворка >= 2.0, то см. атрибут InternalsVisibleTo


Спасибо, гляну
лэт ми спик фром май харт
Re[3]: Reflection & Emit & FieldAccessException
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.08 12:54
Оценка:
Здравствуйте, prVovik, Вы писали:

AVK>>Потому что JIT выполняет верификацию кода перед компиляцией.


V>Исключение вылетает во уже во время работы.


Так и JIT работает при первом вызове, во время работы.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: Reflection & Emit & FieldAccessException
От: prVovik Россия  
Дата: 29.06.08 12:57
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, prVovik, Вы писали:


AVK>>>Потому что JIT выполняет верификацию кода перед компиляцией.


V>>Исключение вылетает во уже во время работы.


AVK>Так и JIT работает при первом вызове, во время работы.


А почему флаг SecurityPermissionFlag.SkipVerification не помогает?
лэт ми спик фром май харт
Re[5]: Reflection & Emit & FieldAccessException
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.08 13:32
Оценка:
Здравствуйте, prVovik, Вы писали:

V>А почему флаг SecurityPermissionFlag.SkipVerification не помогает?


Потому что это другая верификация, это CAS, а не JIT.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.