![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| DimasSup |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.3.2009 Репутация: нет Всего: нет |
Здраствуйте колеги, у меня возник срочный вопрос, я извеняюсь если эта тема поднималась уже.
Мне трубуется передавать в функцию(А) какую либо другую функцию(В), с разным количеством параметров и возращемым типом, и потом по ходу выполнения функции А вызывать эту функцию В есть ли способ такое реализовать, требуется очень строчно. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
DimasSup, google C# delegates
-------------------- СУВ, Partizan. |
|||
|
||||
| DimasSup |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.3.2009 Репутация: нет Всего: нет |
Делегаты разве позволяют присваивать функции с разнымы возращаемыми значениями и разным количеством параметров, если да то дайте пожалуста пример, а не отсылайте в... гугл.
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
разве что на object перейти
только вот пользоваться этим не будет особо удобно Это сообщение отредактировал(а) mihryak - 29.3.2009, 17:06 |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
DimasSup, ну мне это видится так, что нужно просто создать свой собственный класс-наследник класса Delegate
з.ы. хотя ещё проще - просто передавать в функцию A объект класса MethodInfo , который бы характеризовал метод B, и объект Object, которому принадлежит метод B. Ну а затем просто вызываем Invoke у объекта типа MethodInfo с нужными параметрами. -------------------- СУВ, Partizan. |
|||
|
||||
| DimasSup |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.3.2009 Репутация: нет Всего: нет |
Хм... Спасибо вам... Всётаки прейдётся переписать коечтно и делать подругому, так как это слушком громоздко запутано и в коекаих случаешь не будет отвечать требование:((
Всёравно спасибо, что помогли быстро ! |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
DimasSup, ну почему же...всё очень просто
-------------------- СУВ, Partizan. |
|||
|
||||
| DimasSup |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.3.2009 Репутация: нет Всего: нет |
Хм... у функцию, которую я буду передовать нужно будет как-то менять, ну допустим у меня сейчас она вызывается так
как она должна будет выглядить если использовать то что вы мне подсказали? |
||||||
|
|||||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
DimasSup, да как угодно выглядеть может )
-------------------- СУВ, Partizan. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
DimasSup, Возможно вы имели ввиду это:
Или нет? -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
-Mikle-, тоже, кстати, вариант
Единственное, что может помешать - то, что у Action генерик-параметров количество ограниченно четырьмя -------------------- СУВ, Partizan. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
только скорее не Action, а Func - должно что-то возвращаться
а чем мой вараинт с делегатами не понравился? всяко проще рефлексии, при этом прекрасно поддерживаются Func-Action, а compile-time проверки аргументов и возвращаемого значения при данной постановке задания всё равно не добиться т.е.
Это сообщение отредактировал(а) mihryak - 29.3.2009, 19:13 |
|||
|
||||
| -Mikle- |
|
||||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
Можно использовать массив параметров в качестве одного из параметров Ну или добавить свои
или еще такой
ну или..... в общем все в наших руках -------------------- Если тебе плюют в спину, значит ты впереди... |
||||||
|
|||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |