将匿名对象发送到Azure中的服务总线队列

时间:2013-05-19 21:35:35

标签: c# asp.net-mvc-4 azure

我在c#中有一个方法,它接受包含在类中的一组属性并将其推送到azure服务总线队列。有很多类型需要推送,所以我写了一个方法,它接受匿名对象,只使用BrokeredMessaging类将它发送到服务总线队列。

这一行:

//I intially used the string type to know what type of class is passed 
//and then using switch statement, handle each case accordingly.
//But it becomes a very long list of switch statements and I don't want that.
public static bool QueueUp(Object obj, string type)
{
    var msg = new BrokeredMessage(obj);
    _sendObjClient.Send(msg);
}

此代码无效。我想保存调用此方法的许多地方传入显式类型的对象;他们应该发送任何对象,我希望这部分代码能够完成艰苦的工作并将其序列化发送到队列中。

刚刚介绍了System.Reflection命名空间,但我还没有抓住如何实现我的目标。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您必须将对象的类和属性标记为可序列化 - 来自How to Use Service Bus Queues

  

发送到(和从服务总线队列接收)的消息是实例   BrokeredMessage类的。 BrokeredMessage对象有一组   标准属性(如Label和TimeToLive),一个字典   用于保存自定义应用程序特定属性和一个正文   任意应用数据。一个应用程序可以设置的正文   通过将任何可序列化的对象传递给的构造函数的消息   然后BrokeredMessage和相应的DataContractSerializer   用于序列化对象。或者,System.IO.Stream可以   提供。

然后查看SerializableAttribute Class以了解如何将您的课程标记为可序列化。