2016-09-13 6 views
0

In a previous questionevent 클래스 public class SetObjectEvent : PubSubEvent<MyObject> { }을 작성하여 완벽하게 작동합니다. 그러나, 지금 방법과 동일한 작업을 수행하려면, 그래서 PubSubEvent<>보다 다른 뭔가를 확장해야합니다 (?)메서드에 대한 PubSubEvent는 무엇입니까?

르 bigue o'le interwebz 같은 대부분의 질문을 통해 검색하는 중에 "어떻게 메소드를 호출 할 다른 ViewModel에서이 ViewModel을 통해 "사람들은 종속성이나 명령을 참조합니다. 그러나이 특별한 경우에 부모님의 형제 자매가 에 의해으로 불려 져야하는 경우를 다루고 있기 때문에 이들 중 어느 쪽도 그 형제는 형제가 말했습니다. 부모가하지 않는 (할 수없는) 그것의 알고 모든 이제 다음 몇 가지 특성을 요구하는 아이가 아닌 아이의 실존이기 때문에, 나는 누군가가 물론 더 좋은 생각을 가지고 있지 않는, 최적의 솔루션이 될 것 인 EventAggregator를 사용하여 생각.

그럼, 구체적으로, 내 질문은; PubSubEvent<>SetObjectEvent에 바꿔야 만 비슷한 버전 CallMethodEvent : ?x?x?x? { }을 얻을 수 있습니까?

답변

1

확실하지 않음을 해결하기 위해 깨끗한 방법을 원합니다 사소한 :

EventAggregator.GetEvent<MyEvent>().Subscribe(MyMethod); 

MyMethodMyEvent가 게시 될 때마다 실행

public class MyEvent : PubSubEvent 
{ 
} 

와, 그 전체 이벤트 메커니즘을위한 것이 아니다?

각 구독자의 컨텍스트에서 게시자가 정의한 메서드를 실행하려면 페이로드로 메서드를 게시 할 수도 있지만 아직 사용 사례가 없습니다.)

+0

당신이하고있는 것에 대한 문제는'PubSubEvent'가 유효한 인수가 아니라는 것입니다. 내 자신의 응답에 선포 나는 더미 문자열 주위에 던지는거야 이유입니다 만'PubSubEvent '가있다. – Ciphra

+0

어떤 프리즘 버전을 사용합니까? 버전 6.2은 매개 변수가'PubSubEvent'을 가지고 당신이 이전 버전을 사용하는 경우, 당신은 아직도 6.1을 실행하는 문제였다 더미 변수 ... – Haukinger

+0

을 피할 수 없다. 6.2로 업데이트되어 완벽하게 작동합니다. 감사합니다! – Ciphra

0

나는 지금 당장 문제를 해결하기 위해 임시 해결책을 만들었습니다. 동일한 셋업을 만들어하지만, 문자열, CallMethodEvent : PubSubEvent<string> { }

, 나는 출판, this.EventAggregator.GetEvent<CallMethodEvent>().Publish("SomeUselessString");하여 원하는 메소드를 호출 할 수 있으며, this.EventAggregator.GetEvent<CallMethodEvent>().Subscribe((someString) => { this.MethodToBeCalled(); });을 가입 한 후, 원하는 메서드가 호출됩니다. 여기서 가장 큰 단점은 '작동하게 만드는 것'이외에는 문자 그대로 다른 이유가없는 문자열이 항상 있다는 것입니다. 이 솔루션은 조금이기 때문에, 다른 answer'll 팝업하지 않으면 나는 그것을 고수해야하지만 완전히 문제를 이해한다면 나는 문제 ..