1

我正在为 MSN Messenger 协议编写客户端,并且我有代表发送到服务器和从服务器发送的命令的类

这些例子被简化了

class AddUserCommand {
    public int TransactionId { get; set; }
    public string EmailAddress { get; set; }
}

class SendMessageCommand {
    public int TransactionId { get; set; }
    public string Recipient { get; set; }
    public string DeliveryMethod { get; set; }
    public int MessageLength { get; set; }
    public string Message { get; set; }
}

是否可以使用 .NET 框架中已有的类将这些命令序列化为非常简单的以空格分隔的字符串,以便通过套接字发送?

例如..

 AddUserCommand becomes
 ADD 3 bob@bob.com

 SendMessageCommand becomes
 MSG 2 bob@bob.com OFFLINE 28
 Hello bob how are you doing?

问题是我见过/使用的所有序列化类都使用键值对,因为我希望字符串中参数的位置暗示键。

4

1 回答 1

3

不,您必须自己编写或使用已经使用此协议的库。

您将需要编写将这些对象转换为字符串和从字符串转换的代码。您不会使用内置接口。为什么?因为没有什么可以帮助你。您可能会使用一个接口,但它很可能是您自己编写的。显然,如果您愿意,您可以选择使用各种实用程序类TextWriter,但这些只是数据流,而不是序列化。问题是您正试图遵守由外部应用程序定义的非标准化格式。为什么 .NET 框架与 MSN Messenger 有任何关系?

可能有您可以使用的通用序列化库,但 IMO 您最好自己编写,因为这些库将导致比自己编写更复杂的代码。它们中的大多数将基于键值对,因此不太适合。此外,这不是用您自己的代码解决的难题。

于 2013-01-08T20:45:59.993 回答