如何告诉 MessageQueue.SendMessageConnection 如何“XMLize”要发送的对象?

Posted

技术标签:

【中文标题】如何告诉 MessageQueue.SendMessageConnection 如何“XMLize”要发送的对象?【英文标题】:How to tell MessageQueue.SendMessageConnection how to "XMLize" the object to be sent? 【发布时间】: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 并进行了第一次测试,它看起来很棒。请把它写成答案,以便我接受。 【参考方案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 分钟的阅读时间,我非常推荐它。

【讨论】:

以上是关于如何告诉 MessageQueue.SendMessageConnection 如何“XMLize”要发送的对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉控制器调用啥视图?

如何告诉 MonetDB 数据在表中排序?

如何设置系统来告诉我 cron 作业是不是运行不正常?

如何告诉 MessageQueue.SendMessageConnection 如何“XMLize”要发送的对象?

CMAKE 如何告诉 makefile 链接库?

你如何让一个不和谐的机器人告诉 ping?