with azure brokeredmessage get the body without knowing the type
azure, azureservicebus, c#
Solution
Here is the complete code to deserialize from the brokeredmessage:
public T GetBody<T>(BrokeredMessage brokeredMessage)
{
var ct = brokeredMessage.ContentType;
Type bodyType = Type.GetType(ct, true);
var stream = brokeredMessage.GetBody<Stream>();
DataContractSerializer serializer = new DataContractSerializer(bodyType);
XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max);
object deserializedBody = serializer.ReadObject(reader);
T msgBase = (T)deserializedBody;
return msgBase;
}
Problem
When you are using the brokered message in the Azure Service Bus, you can retrieve the body of the message with the call .GetBody. The code is simple: ``` var msg = subscription.Receive(); MyPayload payload = msg.GetBody<MyPayload>(); ``` However, is there a way to retrieve the Body without explicitly knowing the class of the body object? ``` var msg = subscription.Receive(); Type bodyType = Type.GetType( msg.ContentType); var payload = msg.GetBody<bodyType>(); ```