我在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
命名空间,但我还没有抓住如何实现我的目标。
任何帮助将不胜感激。
答案 0 :(得分:0)
您必须将对象的类和属性标记为可序列化 - 来自How to Use Service Bus Queues:
发送到(和从服务总线队列接收)的消息是实例 BrokeredMessage类的。 BrokeredMessage对象有一组 标准属性(如Label和TimeToLive),一个字典 用于保存自定义应用程序特定属性和一个正文 任意应用数据。一个应用程序可以设置的正文 通过将任何可序列化的对象传递给的构造函数的消息 然后BrokeredMessage和相应的DataContractSerializer 用于序列化对象。或者,System.IO.Stream可以 提供。
然后查看SerializableAttribute Class以了解如何将您的课程标记为可序列化。