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

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);
}
}
主站蜘蛛池模板: 石阡县| 房产| 沅陵县| 兴国县| 聂荣县| 囊谦县| 故城县| 滦南县| 巴林右旗| 龙州县| 龙州县| 广昌县| 蒙阴县| 连江县| 历史| 永寿县| 雅江县| 凤翔县| 丰城市| 兴安盟| 贡嘎县| 鹤峰县| 德安县| 徐水县| 九寨沟县| 溧阳市| 高陵县| 江阴市| 乌兰察布市| 柳江县| 土默特右旗| 陇川县| 阿拉善右旗| 浠水县| 崇文区| 永安市| 永城市| 宜兰市| 永春县| 闸北区| 红河县|