![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| tarasD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 5.5.2007 Репутация: нет Всего: 1 |
Помогите пожалуйста! Уже третий день мучаюсь. Никак не могу создать функцию сборки которая сделанная на лету, с помощью System.Reflection.
Вот код: я создаю функцию PlusTwoDigit, которая принимает два параметра (int32, int32). Когда функция принимает один параметр то тогда все нормально, когда два то генерируеться ошибка.
Файл ошибки внизу. Присоединённый файл ( Кол-во скачиваний: 5 )
ERROR.JPG 82,93 Kb |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
что-то ты видимо с опкодами нахимичил. напиши эквивалентный код на C#, скомпиль, потом выдери из него IL рефлектором\ildasm'ом. или так и делал?
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| tarasD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 5.5.2007 Репутация: нет Всего: 1 |
Да вот именно что все так и есть. Я это уже проделал. Но почему то ошибка все-ровно происходит
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
код на C# какой?
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| tarasD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 5.5.2007 Репутация: нет Всего: 1 |
Ниже представлен код функции которая должна сгенероваться
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
L_0000: ldarg.0
L_0001: ldarg.1 L_0002: stfld int32 Test.Digits::digit1 L_0007: ldarg.0 L_0008: ldarg.2 L_0009: stfld int32 Test.Digits::digit2 L_000e: ret вроде так получается, а у тебя опкоды немного другие. особенно сомнителен: gen.Emit(OpCodes.Stloc_1); -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| tarasD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 5.5.2007 Репутация: нет Всего: 1 |
Забери пожалуйста этот опкод, и попробуй. Ничего н выходит все всеровно
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
забирать его не надо, его надо заменить на ldarg. кстати, похоже у тебя соглашение вызова не то, попробуй CallingConventions.HasThis.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| tarasD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 5.5.2007 Репутация: нет Всего: 1 |
А что это значит
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
значит что это метод экземпляра класса, т.е. имеет this.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |