2016-09-06 5 views
0

현재 Xamarin Forms 앱을 개발 중이며 Prism과 호환되도록 다시 작업하는 중입니다. 저는 MVVM 디자인 패턴을 고수하려고합니다. 저는 아마추어 개발자로서 성장하고 그들을 사용하는 법을 배우려고합니다.Prism Xamarin Forms에 액세스하면 뷰 모델 외부로 삽입됩니다.

1) MVVM 디자인 패턴의 관점에서 VM 외부에서 메시징 서비스 (Prism의 EventAggregator) 및 UI 상호 작용 (Prism의 PageDialogService)을 사용하는 것은 부적절한가요? VM에서 호출 된 여러 가지 "서비스"를 작성했으며 메시징 및 UI 서비스에 모두 액세스 할 필요가 있음을 발견했습니다. 예를 들어, VM은 서비스를 호출하고, 서비스는 일부 데이터를 검색 및 처리하고, 계산을 기반으로 사용자에게 질문을 한 다음 원하는 값을 반환하는 처리를 계속합니다. 적절하게하려면 제어를 VM으로 되돌려 야 "그냥"질문을 할 수 있습니까?

2) 동사가 아닌 경우 VM 외부의 서비스에 액세스 할 수 있습니까? 내가 서비스의 생성자에 이들을 삽입 할 수 있다는 것을 쉽게 알 수 없습니다. 그들을 다른 매개 변수와 함께 호출하는 서비스의 기능에 "전달"해도 괜찮습니까? MVVM-ish?

업데이트 :

나는 내 모든 단계가 필요했다 모르겠지만, 덕분에 나는 그것이 작동 가지고 아래. 먼저 싱글 톤 서비스를 인터페이스 (IMyService)와 구현 클래스 (MyService)로 변환했습니다. 다음으로, App.xaml.cs를에 ConfigureContainer을 오버라이드 및 전화 Container.RegisterType<IMyService, MyService>(new ContainerControlledLifetimeManager());

그때 내 ViewModels에 불과 IEventAggregator 및 IPageDialogService처럼 IMyService를 주입 수 있고 나 또한 내 구현 클래스의 public 생성자에 해당 서비스를 주입 할 수있다 (이면 MyService) .

답변

0

광고 1) 이벤트 수집기는 주로 UI를위한 것이지만, "실제"메시지 버스의 고급 기능이 필요하지 않은 경우 앱의 다른 부분에서 메시지 수집기로 사용할 수도 있습니다 .

광고 2)보기 모델 또는 다른 서비스의 종속성이있는 서비스에 종속성을 행복하게 주입 할 수 있습니다. 이것이 의존성 주입 컨테이너가하는 것입니다 :-)

+0

실제로 이벤트 수집기는 UI가 아닌 화재 및 잊어 메시징을위한 것입니다. –

+0

감사합니다. 귀하의 대답은 내가 Unity 컨테이너에 서비스를 등록해야한다는 것을 깨닫게했습니다 (나는 배우 고 ...). 이것은 내가 필요한만큼 같은 줄에있는이 게시물을 찾을 수있게 해 주었다. [Prism (Unity, MVVM)의 싱글 톤 서비스에 속성 삽입하기] (http://stackoverflow.com/questions/29565473/injecting-a -property-in-a-singleton-service-in-prism-unity-mvvm) – madgrizzle

관련 문제