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)); }