1

我在 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命名空间,但我还没有掌握如何真正实现我的目标。任何帮助将不胜感激。

4

1 回答 1

0

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

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

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

于 2013-05-20T04:39:53.817 回答