Есть множество функций типа 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));
Комментариев нет:
Отправить комментарий