public XElement Serialize(Payload payload)
        {
            lock (Foo)
            {
                var serializer = Serializers.GetOrAdd(payload.GetType(), type => new XmlSerializer(type));

                using (var ms = new MemoryStream())
                {
                    serializer.Serialize(ms, payload);
                    ms.Position = 0;

                    return XElement.Load(ms);
                }
            }
        }
 public void QueueNotificationRequest(Guid notificationId, Payload payload)
 {
     _payloads.TryAdd(new KeyValuePair<Guid, Payload>(notificationId, payload));
 }