官术网_书友最值得收藏!

Event aggregator

An event aggregator (also known as publisher/subscriber or Pub-Sub) is a messaging pattern where senders of messages/events, called publishers, do not program the messages to be sent directly to a single/specific receiver, called subscribers, but, instead, categorize published messages into classes without knowledge of which subscribers, if any, there may be. Messages are then funneled through a so-called aggregator and delivered to the subscribers. This approach provides a complete decoupling between the publishers and subscribers while maintaining an effective messaging channel.

Event aggregator implementation within the Xamarin.Forms framework is done via MessagingCenterMessagingCenter exposes a simple API that is composed of two methods for subscribers (that is, subscribe and unsubscribe) and one method for publishers (send).

We can demonstrate the application of the event aggregator pattern by creating a simple event sink for service communication or authentication issues in our application. In this event sink (which will be our subscriber), we can subscribe to error messages that are received from various view-models (given that they all implement the same base type) and alert the user with a friendly dialog:

MessagingCenter.Subscribe<BaseViewModel> (this, "ServiceError", (sender, arg) =>
{
// TODO: Handler the error
});

We would have the following in the event of an unhandled exception on our view-model:

 public void Login()
{
try
{
//TODO: Login
Result = "Successfully Logged In!";
}
catch(Exception ex)
{
MessagingCenter.Send(this, "ServiceError", ex.Message);
}
}
主站蜘蛛池模板: 西乌珠穆沁旗| 房产| 霍林郭勒市| 夏河县| 武穴市| 铅山县| 黔江区| 弥渡县| 西乡县| 福泉市| 永顺县| 嘉鱼县| 桦甸市| 达拉特旗| 中阳县| 如东县| 大洼县| 廊坊市| 山西省| 武定县| 嵊州市| 和静县| 济阳县| 金阳县| 双鸭山市| 陕西省| 邵东县| 衡水市| 黄冈市| 沙坪坝区| 中超| 肇东市| 仪陇县| 青龙| 同江市| 武强县| 珲春市| 平原县| 德庆县| 富顺县| 二连浩特市|