C# 使用从CloudQueueMessage派生的类型
可能重复:C# 使用从CloudQueueMessage派生的类型,c#,oop,azure,azure-queues,C#,Oop,Azure,Azure Queues,可能重复: 我正在处理一个用例,该用例要求我的队列消息比Windows Azure队列消息(CloudQueueMessage类)提供的属性多几个属性。我不能使用CloudQueueMessage中的大多数属性,因为它们大多受到保护 因此,我想继承CloudQueueMessage并将我的额外属性添加到派生类。我的派生类如下所示: public class AzureQueueMessage : CloudQueueMessage { public AzureQueueMessag
我正在处理一个用例,该用例要求我的队列消息比Windows Azure队列消息(CloudQueueMessage类)提供的属性多几个属性。我不能使用CloudQueueMessage中的大多数属性,因为它们大多受到保护 因此,我想继承CloudQueueMessage并将我的额外属性添加到派生类。我的派生类如下所示:
public class AzureQueueMessage : CloudQueueMessage
{
public AzureQueueMessage(string content): base(content)
{
}
//My new property
public string Label { get; set; }
}
AzureQueueMessage message = new AzureQueueMessage("testing");
cloudQueue.AddMessage(message);
CloudQueueMessage qmessage = cloudQueue.GetMessage();
AzureQueueMessage azureMessage = qmessage as AzureQueueMessage;
我的邮件插入和检索代码的其余部分如下所示:
public class AzureQueueMessage : CloudQueueMessage
{
public AzureQueueMessage(string content): base(content)
{
}
//My new property
public string Label { get; set; }
}
AzureQueueMessage message = new AzureQueueMessage("testing");
cloudQueue.AddMessage(message);
CloudQueueMessage qmessage = cloudQueue.GetMessage();
AzureQueueMessage azureMessage = qmessage as AzureQueueMessage;
这里,cloudQueue是我的Azure队列实例
消息插入很好,但是azureMessage在转换回派生类时始终为null
我确实在类似的线路上遇到了一个解决方案,但我还没有尝试过
这种行为是正常的还是我遗漏了什么?这些是OOP的基本原则。当您使用“as AzureQueueMessage”强制转换时,您实际上会说:“尝试查看此实例是否实际上是AzureQueueMessage”。但是GetMessage()不返回AzureQueueMessage,它返回CloudQueueMessage,您无法更改它
如果您想使用AzureQueueMessage的实例,您必须在之后自己创建它。您可以编写一个接受返回的CloudQueueMessage并接管所有值的构造函数。您想要的完全可以实现,但方式略有不同。它被称为“强类型队列”。请查看,因为它将完全回答您的问题。我在最初的问题中提到了这条线索。我只是想在获取每条消息时避免反序列化。但我想如果没有反序列化,就无法实现这一点。感谢您的回复。您认为在没有序列化/反序列化的情况下,如何通过网络发送和对象?这是唯一可行的办法。