2017-02-06 1 views
0

Я работаю с SSH.NET, и я хочу создать «Безопасный режим» в своем классе Connection. В принципе, он должен хранить все методы, выполненные в одном соединении, и затем «выполнять» их один за другим по желанию. Что-то вроде этого:Хранение методов для выполнения всего один за другим

Connection conn = new Connection("server", "username", "password"); 
conn.secureMode(true); //enabling secure mode 
conn.changeDirectory("directory"); 
conn.downloadFile("file"); 
conn.FlushMethods(); 
conn.disconnect(); 

После Flush() как changeDirectory("directory") и downloadFile("file") должны быть «выполнены» в этом порядке.

Так что я должен хранить эти методы в каком-то массиве или очереди, правильно? Но как? А потом как их выполнить?

Не могли бы вы дать мне какие-либо намеки?

+0

Есть ли дополнительная причина, по которой вы хотите использовать очередь? пока они появятся в коде в этом порядке, тогда они будут выполняться в том же порядке. – Mobigital

+0

Нет, их нет. Я просто думал о какой-то коллекции. – SuperM4n

ответ

2

Внутренне вы можете хранить список команд в виде серии действий внутри вашего класса и запускать этот список только в том случае, если вы хотите «сбросить» команды.

public class Connection 
{ 
    private List<Action> _commandList = new List<Action>(); 

    public void ChangeDirectory(string directoryName) 
    { 
     _commandList.Add(() => 
      { 
      //Actual code to change directory 
      }); 
    } 

    public void FlushMethods() 
    { 
     foreach(var command in _commandList) 
     { 
      command(); 
     } 
     _commandList.Clear(); 
    } 
} 
+0

OP: Помните о потенциальных исключениях, вы должны обращаться с ними соответствующим образом. –

+0

Правильно, вам нужно будет обрабатывать любые ошибки на уровне цикла foreach или непосредственно в «действии». – Drawaes

+0

Спасибо всем! – SuperM4n

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