Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

.NET Bug Reports

273
16 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
В этой теме выкладываем баги, которые были обнаружены в функционировании классов .NET или кода из .NET SDK.
273
16 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
Странная недработка в ildasm (версия 5.0.50727.42). Дизассемблер не отображает MSIL код, который соответствует этому коду на C#:
 
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]public [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] StaticMethodExample([[/SIZE][SIZE=2][COLOR=#008080]MarshalAsAttribute[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][SIZE=2].I4)] [/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=2] size, [[/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][SIZE=2].SafeArray, SafeArrayUserDefinedSubType = [/SIZE][SIZE=2][COLOR=#0000ff]typeof[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]ValueType[/COLOR][/SIZE][SIZE=2]))] [/SIZE][SIZE=2][COLOR=#008080]ValueType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] val)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
 
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]

А, в частности, это фрагмент:
 
Код:
[FONT=Courier New][[SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][SIZE=2].SafeArray, SafeArrayUserDefinedSubType = [/SIZE][SIZE=2][COLOR=#0000ff]typeof[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]ValueType[/COLOR][/SIZE][SIZE=2]))][/SIZE][/FONT]

Вот что получаем через ILDASM:
 
Код:
[SIZE=3][FONT=Courier New][SIZE=2].method public hidebysig static void StaticMethodExample(int32 marshal( int32) size,[/SIZE][/FONT]
[FONT=Courier New][SIZE=2]class [mscorlib]System.ValueType[] marshal( safearray) val) cil managed[/SIZE][/FONT]
[/SIZE]

Как видим, около параметра val присутствует спецификатор marshal с параметром safearray, но вот только информация о пользовательском типе отсутствует. Сейчас разбирусь в стандарте ECMA-335, напишу так, как должно быть.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог