2016-08-11 2 views
-2

C#에서 간단한 명령 줄 인터페이스를 개발 중입니다. 현재는 사용자의 입력을 파싱하고 사용자가 입력 할 수있는 다양한 명령을 실행하기 위해 if-then-else 문의 긴 체인을 실행합니다. 몇 가지 예 :명령 줄 인터페이스의 클래스 구조

  • 만드는 디렉토리
  • 삭제 디렉토리를 재귀 적으로
  • 입력 디렉토리
  • 텍스트 편집기를 입력
  • 리스팅 디렉토리
  • 또는 내가 텍스트 기반의 UI처럼 그것을 쓰고 있어요 다른 도구 중력 시뮬레이터 나 콘웨이의 삶의 게임 같은 인터프리터 나 수학 도구 나 게임과 함께 만든 ASM 변형에 대해서
  • 모든 것을 저장하는 상태
  • 파일 체인 가지 작업을 진행하게 만 있다면 - 다음 파일

을 삭제

  • 이름을 변경
  • 도움말 기능
  • . 명령이 인터페이스에서보다 나은 방식으로 표현되는 방식에 접근하고 싶습니다.

    내 첫번째 생각은 같은 몇 가지 특성을 가진 Class Command을하는 것입니다 :

    • 사용자 유형 help
    • 보다 구체적인 정보가 때 사용자가 입력 할 때 나열됩니다 명령에 대한 요약 항목 인수 help 'specific command'
    • 수 있도록
    • 명령이 실행될 때 함수에 대한 대리자가 호출 될

    이것은 처음 생각이었고 비교적 새로운 것이므로 더 나은 방법이 무엇인지 궁금합니다.

  • +0

    몇 가지 프로젝트에서 필자가 필요로하는 재사용 가능한 명령 줄 인터페이스 라이브러리를 작성했습니다. 어쩌면 여행에 대해 생각할 몇 가지 추가 아이디어를 제공 할 것입니다. https://github.com/mariocatch/YACL – mariocatch

    답변

    1

    스위치의 경우 같은이 시나리오에서는 if..else보다 더 나은 수 있습니다 : 명령에 대한

    switch (command) 
    { 
        case "copy": 
         // Copy 
         break; 
        case "create": 
         // Create; 
         break; 
    } 
    

    , 명령 패턴이 인터페이스를 구현하는 가장 좋은 방법입니다, 몇 참조 명령 디자인 패턴으로 시작 : https://code.msdn.microsoft.com/windowsapps/Design-Patterns-Command-1962d567 http://www.blackwasp.co.uk/command.aspx

    또한 예를 들어, 명령 줄 인수를 구문 분석하는 방법을 찾기 위해 온라인 명령 행 유틸리티의 샘플 구현을 참조 할 수 있습니다

    : http://crmcommandline.codeplex.com/

    +1

    답장을 보내 주셔서 감사합니다. 최고로 표시했습니다. –