2015-04-01 3 views
0

я следующее:Очистка переключатель/случай заявление FileInfo.name с интерфейсом

foreach(var file in today.GetFiles()) 
{ 
    if(file.Length > 0 && file.Extension == ".txt") 
    { 
     switch (file.Name) 
     { 
      case "realy_long_ugly_file_name_0": 
       //do something 
       break; 
      case "realy_long_ugly_file_name_1": 
       //do something else 
       break; 
     } 
    } 
} 

Я встречал this post и думал, что я мог бы очистить свой код, используя interface. Будет ли это подходящим приложением для этой ситуации? Я установил интерфейс и наследование, но не знаю, как действовать.

Я понимаю, что интерфейс вызывает разные class на основе того, что IPizza участник в IList<IPizza>. Мне трудно понять, как я могу пройти в file.Name (ранее с switch/case) на interface для вызова разных классов.

interface IMyFiles 
{ 
    void Process(FileInfo file); 
} 

public class FileName0 : IMyFiles 
{ 
    void IMyFiles.Process(FileInfo file) 
    { 
     //do somthing specific to FileName0 
    } 
} 

public class FileName1 : IMyFiles 
{ 
    void IMyFiles.Process(FileInfo file) 
    { 
     //do somthing specific to FileName1 
    } 
} 

ответ

0

Что вы здесь делаете, это инкапсулировать различные типы обработки на основе файлов в собственные объекты.

Эти варианты, которые я вижу:

  1. IMyFiles объекты решают, что они обрабатывают (вы можете сделать это, имея если в начале методов для конкретных реализаций). В основном создайте коллекцию со всеми вашими классами, которые являются IMyFiles, и вызовите процесс, пока кто-то не узнает, что ему нужно его поднять.
  2. Создайте завод, используя оператор switch, чтобы он возвращал экземпляр IMyFile, а затем просто вызывал процесс. Таким образом, решение о том, что я (строительство) и что я могу сделать (отдельные).
0

Если все файлы имеют похожие столбцы, но варианты чисел, как, например, первые 3 столбца, а другие имеют x количество столбцов, у нас может быть другой выбор программирования, но если файл полностью отличается, то это хороший код , он читается и документируется

Смежные вопросы