Страницы

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

понедельник, 6 января 2020 г.

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

#c_sharp #aspnet #функции #делегаты #параметры


Есть множество функций типа 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? Как это лучше сделать?
    


Ответы

Ответ 1



Используйте просто Action: protected void editImage(Action func) { currentImage.ImageUrl = @"..\images\img0.jpg"; func(); photo.Save(@"~\" + imagePath); } Вызывать как-то так: editImage(() => photo.FlipVertical()); Если вам нужно непременно передавать внутрь функцию наподобие flipImageV, которая получает два игнорируемых аргумента, можно так: editImage(() => flipImageV(null, EventArgs.Empty));

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

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