2013-10-05 2 views
3

에 명령 줄 매개 변수를 사용하여 내가 명령 줄 매개 변수를 취할 수있는 WPF 응용 프로그램이 있습니다. ViewModel에서이 명령 줄 매개 변수를 사용하려면 다음 옵션을 사용합니다.방법의 ViewModel (MVVM 모델) WPF 응용 프로그램

1) App.xaml.cs를 공공 정적 변수를 생성한다. main 메소드에서 명령 행 매개 변수 값을 읽어 public static 변수에 할당하십시오. App.variablename을 사용하여 viewmodel에서 액세스 할 수 있습니다.

2) System.Environment.SetEnvironmentVariable ("CmdLineParam", "u")과 같은 환경 변수를 만든 다음 나중에 Environment.GetEnvironmentVariable ("CmdLineParam")을 사용하여 viewmodel에서 사용합니다.

나는 좋은 생각 MVVM 패턴 인 접근 요청하고 싶은 경우이를 달성하기 위해 더 나은 방법이있다.

답변

11

나는이 문제가 전혀 MVVM 관련이 있다고 생각하지 않습니다. 뷰 모델에서 명령 행 인수를 사용 가능하게 만드는 좋은 방법은 서비스를 생성 (생성자)하는 것일 수 있습니다. 이제 IEnvironmentService를 호출하자

public class MyProductionEnvironmentService : IEnvironmentService 
{ 
    public IEnumerable<string> GetCommandLineArguments() 
    { 
    return Environment.GetCommandLineArgs(); 
    } 
} 

로보기 모델은 다음과 같습니다

public interface IEnvironmentService 
{ 
    IEnumerable<string> GetCommandLineArguments(); 
} 

구현은 다음 (현재 프로세스에 대한 명령 줄 인수를 포함하는 문자열 배열을 반환) Environment.GetCommandLineArgs을 사용 이 :

public class MyViewModel 
{ 
    public MyViewModel(IEnvironmentService service) 
    { 
    // do something useful here 
    } 
} 

만들고 실행시 프로덕션 환경 서비스를 삽입되어 지금해야 할 일은이 (스스로를 통과, 시간 IoC 컨테이너 등으로 만든 Aving). 그리고 단위 테스트를 위해 가짜/모의 것을 사용하십시오.

관련 문제