【问题标题】:How to tell MessageQueue.SendMessageConnection how to "XMLize" the object to be sent?如何告诉 MessageQueue.SendMessageConnection 如何“XMLize”要发送的对象?
【发布时间】:2021-09-08 03:03:11
【问题描述】:

我正在使用 C# 使用 System.Messaging.MessageQueue.SendMessageConnection 发送一个包含一些参数的对象,例如:

_sendQueue.Send(myObject, ...);

我的myObject 是一个对象,包含一些属性,例如Field1

我正在检查我的消息是如何发送的,使用:

  • 计算机管理
  • 服务和应用程序
  • 消息队列
  • 私有队列
  • 打开右侧队列,在“队列消息”中,右键单击并勾选“属性”、“正文”。

我看到如下标签:

<Field1>content_Field1</Field1>

而不是这个,我想看到类似的东西:

<F1>content_Field1</F1>

我的对象中的属性和我想使用的 XML 标记之间是否有简单的映射关系?

提前致谢

【问题讨论】:

  • 参见:Control XML serialization using attributes - 您可以使用类属性上的属性来控制元素命名。
  • @Fildor:我检查了 URL 并进行了第一次测试,它看起来很棒。请把它写成答案,以便我接受。

标签: c# xml xml-serialization message-queue


【解决方案1】:

这实际上很容易做到。查看Control XML serialization using attributes :

默认情况下,XML 元素名称由类或成员名称确定。在一个名为 Book 的简单类中,一个名为 ISBN 的字段将生成一个 XML 元素 tag ,如下例所示。

public class Book
{
    public string ISBN;
}
// When an instance of the Book class is serialized, it might
// produce this XML:
// <ISBN>1234567890</ISBN>.

如果您想给元素一个新名称,可以更改此默认行为。以下代码显示了属性如何通过设置 XmlElementAttribute 的 ElementName 属性来实现此功能。

public class TaxRates {
    [XmlElement(ElementName = "TaxRate")]
    public decimal ReturnTaxRate;
}

- 截至 2017 年 3 月 30 日的微软文章,不同作者(我强调)

整篇文章大约需要 6 分钟的阅读时间,我非常推荐它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多