Notifying the User Interface
Suppose that you wanted to extend the application to show the user
an alert whenever somebody mentions her on Twitter. The logic to check
with Twitter for mentions would ideally remain in the shared layer so that
it can be reused across all platforms. This means that the check needs to
be platform-independent, but each platform still needs to be able to know
when it occurs so that it can notify the user. This is a great example of
a time when the observer pattern discussed in Chapter 3 can come in handy. TwitterClient can expose an event that it
publishes when a mention is detected, and each application can subscribe
to the event and alert the user.
Shared Layer
First, add a new class to the Chapter4 folder named MentionEventArgs, which will represent the
data sent back to the application when the event is fired. It should
include a Tweet object (the same type
created in the first section) containing information about the mention
(see Example 4-13).
Example 4-13. MentionEventArgs.cs
using System;
namespace SharedLibrary.Chapter4
{
public class MentionEventArgs : EventArgs
{
public Tweet Tweet { get; private set; }
public MentionEventArgs(Tweet tweet)
{
Tweet = tweet;
}
}
}Now open up TwitterClient.cs and modify it to look like Example 4-14. The example only includes new code being added to the class, so append this to what is already in that class.
Example 4-14. TwitterClient.cs (updates only)
using System; using System.Collections.Generic; using System.Linq; ...