2012-02-14 133 views
0

我目前有一个套接字应用程序,用于从客户端向服务器来回传送字符串。我最近决定,发送序列化对象会更有意义,但会遇到问题。我将代码转换为使用SoapFormatter,它允许我将对象序列化为字符串并发送字符串。试图反序列化继承对象时,我在客户端遇到了一个问题。看来,soapformatter不支持继承。问题发生在反序列化过程中,如果我在发送子对象时试图反序列化父对象(我不知道这是否是正确的术语),它会抛出一个抛出异常。.net BinaryFormatter是否支持继承?

我的问题是,BinaryFormatter是否支持继承?

+1

邮政编码......你的问题没有太大意义。 – 2012-02-14 19:33:06

+0

当然,它运作良好。 – leppie 2012-02-14 19:39:36

+1

你正在做de/serialization,还是使用Remoting/web-services/WCF服务调用的一部分?也许问题不在于你的序列化器,而是与服务契约。 – 2012-02-14 19:45:20

回答

3

SoapFormatterBinaryFormatter都支持序列化从其他类型继承的类型的对象。换句话说,两者都支持继承。

您应该就SoapFormatter询问关于您的具体问题的其他问题。另外,只是使用不同的格式化程序很可能无法解决您的问题(但在您问问之前您是否已尝试过)。

+0

是的,它看起来像支持继承。我在其他地方读过它没有。我发现我的问题是,当每个类被序列化时,它被标记为“ExampleMessage version = 1.0.0.0 project = server”或类似的东西。我正在使用名为ExampleMessage.cs的链接文件,它与服务器和客户端相同,但是序列化程序将它视为不同的类,因为它由不同的项目构建。因此它在反序列化时抛出一个强制异常。 – german129 2012-02-14 21:24:58

+0

是的,在正常情况下,序列化和反序列化时类型必须来自同一个程序集。 – svick 2012-02-14 21:40:19