#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));
Комментариев нет:
Отправить комментарий