[C#] Делегаты. Передача метода как параметра

Статус
В этой теме нельзя размещать новые ответы.

Orbit@L

Писатель
Регистрация
19 Июн 2012
Сообщения
7
Реакции
2
Как видите код повторяется и изменяется только правило регулярного выражения и вызов метода. Как упростить и оптимизировать этот код, например поместить в метод и передавать правило регулярного выражения и делегаты методов func.
Код:
if (Regex.IsMatch(txtboxlink.Text, @"(http://)?(site)\.com/news/\d+/.*?"))
                try
                {
                    func1();
                }
                catch (WebException)
                {
                    error("Невозможно получить данные с сервера");
                }
                catch (NullReferenceException)
                {
                    error("Страница не распознана");
                }
            else if (Regex.IsMatch(txtboxlink.Text, @"(http://)?(test)\.org/forum/topic\.php\?p\=\d+"))
                try
                {
                    func2();
                }
                catch (WebException)
                {
                    error("Невозможно получить данные с сервера");
                }
                catch (NullReferenceException)
                {
                    error("Страница не распознана");
                }
            else
                error("Неправильная ссылка на страницу");
 

psn

Мастер
Регистрация
30 Апр 2009
Сообщения
227
Реакции
30
тут не нужны делегаты, не надо писать отдельно обработчик ошибок для каждого условия и все
Код:
                    try
                    {
                        if (Regex.IsMatch(txtboxlink.Text, @"(http://)?(site)\.com/news/\d+/.*?"))
                            func1();
                        else if (Regex.IsMatch(txtboxlink.Text, @"(http://)?(test)\.org/forum/topic\.php\?p\=\d+"))
                            func2();
                        else
                            error("Неправильная ссылка на страницу");
                    }
                    catch (WebException)
                    {
                        error("Невозможно получить данные с сервера");
                    }
                    catch (NullReferenceException)
                    {
                        error("Страница не распознана");
                    }
                    catch (Exception exception)
                    {
                        error(exception.Message + exception.StackTrace);
                    }

Func и Action используются в основном для работы с gui и в Linq
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху