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

本文关键字:服务 总线 队列 Azure 对象 | 更新日期: 2023-09-27 18:14:16

我在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命名空间,但我还没有抓住如何实际实现我的目标。

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

你必须将你的对象的类和属性标记为可序列化的——来自如何使用服务总线队列:

发送到(和从)服务总线队列接收的消息是实例BrokeredMessage类的。BrokeredMessage对象有一组标准属性(如Label和timeolive),一个字典用于保存特定于应用程序的自定义属性,以及任意应用程序数据。的主体方法的构造函数传递任何可序列化的对象BrokeredMessage,然后适当的DataContractSerializer将用于序列化对象。另外,System.IO.Stream可以提供。

然后查看SerializableAttribute Class来学习如何将你的类标记为Serializable