का उपयोग करने का उचित तरीका Messenger
कक्षा का उपयोग करने का सही तरीका क्या है? मुझे पता है कि इसका उपयोग ViewModels/Views संचार के लिए किया जा सकता है, लेकिन क्या यह तकनीकी/व्यावसायिक सेवा परत के लिए इसका उपयोग करने का एक अच्छा तरीका है?एमवीवीएम लाइट मैसेंजर
उदाहरण के लिए, एक लॉगिंग/नेविगेशन सेवा रचनाकारों में कुछ संदेशों के लिए पंजीकृत है और यह पता है कि ये संदेश ऐप में कब होते हैं। प्रेषक (व्यूमोडेल कहां सेवा) सेवा इंटरफ़ेस का संदर्भ नहीं देता है लेकिन संदेश भेजने के लिए केवल संदेशवाहक है। यहां एक नमूना सेवा है:
using System;
using System.Windows;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using App.Service.Interfaces;
using GalaSoft.MvvmLight.Messaging;
namespace App.Service
{
public class NavigationService : INavigationService
{
private PhoneApplicationFrame _mainFrame;
public event NavigatingCancelEventHandler Navigating;
public NavigationService()
{
Messenger.Default.Register<NotificationMessage<Uri>>(this, m => { this.NavigateTo(m.Content); });
}
public void NavigateTo(Uri pageUri)
{
if (EnsureMainFrame())
{
_mainFrame.Navigate(pageUri);
}
}
public void GoBack()
{
if (EnsureMainFrame()
&& _mainFrame.CanGoBack)
{
_mainFrame.GoBack();
}
}
private bool EnsureMainFrame()
{
if (_mainFrame != null)
{
return true;
}
_mainFrame = Application.Current.RootVisual as PhoneApplicationFrame;
if (_mainFrame != null)
{
// Could be null if the app runs inside a design tool
_mainFrame.Navigating += (s, e) =>
{
if (Navigating != null)
{
Navigating(s, e);
}
};
return true;
}
return false;
}
}
}
आगे पढ़ने के लिए: [वैश्विक घटनाओं को हानिकारक माना जाता है] (http://dkturner.blogspot.hu/2010/06/global-events-cononsidered-harmful.html) – nemesv
धन्यवाद, एक गूढ़ दृष्टिकोण प्रतीत होता है। लेकिन यह एमवीवीएम मैसेंजर – Cybermaxs