我正在处理将数据存储在 azure 队列存储中,为此目前我有 2 个数据类型类,如下所示
[Serializable]
public class Task1Item
{
public int ID { get; set; }
public string Company { get; set; }
------
------
}
[Serializable]
public class Task2Item
{
public int ID { get; set; }
public string connectTo{ get; set; }
public string Port{ get; set; }
------
------
}
并且为了将记录插入队列,我正在使用以下方法
// For Task1Item
CloudQueueMessage msg = new CloudQueueMessage(item1.ToBinary<Task1Item>());
// For Task2Item
CloudQueueMessage msg = new CloudQueueMessage(item2.ToBinary<Task2Item>());
我需要从不同的队列中读取
var item1 = cloudQueueMessage1.FromMessage<Task1Item>();
var item2 = cloudQueueMessage2.FromMessage<Task2Item>();
在这里,我只想使用 1 个队列存储(因为会有更多的任务项)所以任何人都可以建议我如何将不同类型的对象组合到一种类型的对象中?
注意:ToBinary 和 FromMessage 是简单的扩展
public static byte[] ToBinary<T>(this T dns)
{
var binaryFormatter = new BinaryFormatter();
byte[] bytes = null;
using (var memoryStream = new MemoryStream())
{
binaryFormatter.Serialize(memoryStream, dns);
bytes = memoryStream.GetBuffer();
}
return bytes;
}
public static T FromMessage<T>(this CloudQueueMessage cloudQueueMessage)
{
var bytes = cloudQueueMessage.AsBytes;
using (var memoryStream = new MemoryStream(bytes))
{
var binaryFormatter = new BinaryFormatter();
return (T)binaryFormatter.Deserialize(memoryStream);
}
}
谢谢。