Wie kann ConnectionManager die exspirationRegistrationId abrufen, die in der AndroidPush-Klasse erfasst wurde?Wie verbinde ich Ereignisse, die auf eine referenzierte Lösung gefeuert werden
Mache ich das falsch?
Irgendwelche Vorschläge, wie ich meine Lösung verbessern kann?
Gibt es irgendein Muster, dem ich folgen könnte?
Lösung: Manager
public class ConnectionManger
{
private readonly IPushManager pushManager = new PushManager();
public void NotifyAppUser(List<PushNotificationSubscription> regIds, Alert alert)
{
pushManager.PushNotification(regIds, alert);
var expiredRegistrationId = ??
}
}
Lösung: PushNotification
public class PushManager : IPushManager
{
public void PushNotification(List<PushNotificationSubscription> registeredPhone, Alert alert)
{
AndroidPush androidPush = new AndroidPush();
androidPush.Push(alert, registeredPhone);
}
}
public class AndroidPush : IPushNotificationStrategy
{
public void Push(Alert alert, List<string> registrationIds)
{
// Wait for GCM server
#region GCM Events
gcmBroker.OnNotificationFailed += (notification, aggregateEx) =>
{
var expiredRegistrationId = aggregateEx.OldId;
Q: How do i pass expiredRegistrationId to ConnectionManager class?
};
}
}
Ad eine gescheiterte Immobil zu der Klasse ConnectionManager, so dass es durch den Event-Handler gesetzt werden kann. – jdweng
Wenn ich dem ConnectionManager eine fehlgeschlagene Eigenschaft hinzufüge, kann AndroidPush diese Eigenschaft nicht festlegen, da sie von ConnectionManager referenziert wird und einen Zirkelverweis verursacht. –
Sie müssen eine Instanz der Klasse verwenden. – jdweng