Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подобие switch для string 
V
    Опции темы
Fortnox
Дата 9.4.2010, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Есть примерно такой код:
Код

             if (txtUrl.Text.Contains("someText"))
            {
                ExampleClass c = new ExampleClass();
                c.DoSomething();
            }
            else if (txtUrl.Text.Contains("someText2"))
            {
                ExampleClass2 c = new ExampleClass2();
                c.DoSomething();
            }
            else if (txtUrl.Text.Contains("someText3"))
            {
                ExampleClass3 c = new ExampleClass3();
                c.DoSomething();
            }
            else if (txtUrl.Text.Contains("someText4"))
            {
                ExampleClass4 c = new ExampleClass4();
                c.DoSomething();
            }
            else if (txtUrl.Text.Contains("someText5"))
            {
                ExampleClass5 c = new ExampleClass5();
                c.DoSomething();
            }
            //...
            //Далее таких условий еще примерно штук 5...

Я вижу, что это просто ужасно выглядит (это обработка при нажатии кнопки, если что).
Хотелось бы как-нибудь улучшить данный кусок кода в плане правильности и красоты, но мне что-то ничего в голову не приходит. 
Например, хотя бы уж, нечто подобное switch'у.

Логика такая:
В зависимости от введеннего URL - создается класс, который, в свою очередь, наследуется от общего класса, создаваемый экземпляр класса содержит пару свойств, которые нужны в обработке в базовом классе.

Это сообщение отредактировал(а) Fortnox - 9.4.2010, 03:55
PM MAIL   Вверх
Partizan
Дата 9.4.2010, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Код

...
private static readonly string firstKey = "someText";
private static readonly string secondKey = "someText2";
..

public IDoSomething CreateIDoSomething(string text)
{
     if (text == null) throw new ArgumentNullException("text");

     if (text.Contains(firstKey)) return new ExampleClass();
     if (text.Contains(secondKey)) return new ExampleClass2();
     ....

return null;
}

void BtnClickHandler(...)
{
     IDoSomething smth = CreateIDoSomething(txtUrl.Text);
     if (smth != null) smth.DoSomething();
}



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.