Страницы

Поиск по вопросам

среда, 13 февраля 2019 г.

c# сделать функцию параметром функции

Есть множество функций типа flipImageV. До и после кода в этих функциях должны быть одинаковые строки кода. Что бы в каждой функции типа flipImageV их не писать, хочу сделать одну, куда буду передавать нужную функцию на выполнение...
Вот универсальная функция, куда передаю выбранную функцию типа flipImageV:
protected void editImage(delegate func) { currentImage.ImageUrl = @"..\images\img0.jpg"; func(); photo.Save(@"~\" + imagePath); }
Функция типа flipImageV:
protected void flipImageV(object sender, EventArgs e) { photo.FlipVertical(); }
Использование того шаблона:
editImage(flipImageV);
или
protected void flipImageV(object sender, EventArgs e) { editImage(photo.FlipVertical()); }
Что должно быть вместо delegate func? Как это лучше сделать?


Ответ

Используйте просто Action
protected void editImage(Action func) { currentImage.ImageUrl = @"..\images\img0.jpg"; func(); photo.Save(@"~\" + imagePath); }
Вызывать как-то так:
editImage(() => photo.FlipVertical());

Если вам нужно непременно передавать внутрь функцию наподобие flipImageV, которая получает два игнорируемых аргумента, можно так:
editImage(() => flipImageV(null, EventArgs.Empty));

Комментариев нет:

Отправить комментарий