c# - WCF 序列化类型不匹配

标签 c# wcf serialization

我有一个对象,我们称它为 UnSerializableObject,我不能更改它,我需要序列化它。所以我创建了自己的对象,称为 SerializableObject,它是可序列化的,并且包含与原始对象相同的所有数据。看起来像这样:

namespace test  
[Serializable]  
class SerializableObject  
{  
    private int item1;  
    public int Item1  
    {  
        get;  
        set;  
    }  
    public SerializableObject()  
    {}  
}  

然后我创建了另一个类,它在 SerializableObject 和 UnSerializableObject 之间进行转换。 在服务方面一切正常。服务中的方法将 SerializableObject 作为参数,我将其转换为 UnSerializableObject。问题出在客户端。我使用 svcutil 创建客户端代码。然后我将一个 Object 转换为 SerializableObject 并在服务调用中使用 SerializableObject。像这样:

  TTSServiceClient aClient = new TTSServiceClient(); 
        UnSerializableObject loMMessage = new MostMessage();
        SerializableObject loSMMessage = ObjectConverter.ToSerializableObject(loMMessage);
        aClient.Allocate_OnStartResultAck(loSMMessage);

当我编译客户端时出现错误:

错误 59 参数“1”:无法从“test.Utilities.SerializableObject [c:\Projects\Client\Client\test.Utilities.dll]”转换为“test.Utilities.SerializableObject [C:\Projects\Client\Client\Service.cs(19)]'

static Class ObjectConverter
{
   static public SerializableObject ToSerializableObject(UnSerializableObject usObject)
   {   
        SerializableObject sObject = new SerializableObject();
        sObject.Item1 = usObject.Item1;
        return sObject;
   }
}

为什么会这样?我该如何解决?有更好的方法来处理这个问题吗?

最佳答案

我不得不在客户端重写我的转换方法并删除对 test.utilities.dll 的引用。所以本质上是这样

TTSServiceClient aClient = new TTSServiceClient(); 
UnSerializableObject loMMessage = new MostMessage();
SerializableObject loSMMessage = ObjectConverter.ToSerializableObject(loMMessage);
aClient.Allocate_OnStartResultAck(loSMMessage);

成为

TTSServiceClient aClient = new TTSServiceClient(); 
UnSerializableObject loMMessage = new MostMessage();
SerializableObject loSMMessage = new SerializableObject();
loSMMessage.Item1 = loMMessage.Item1;
aClient.Allocate_OnStartResultAck(loSMMessage);

这有点烦人,但它有效。

关于c# - WCF 序列化类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575671/

相关文章:

c# - 在 MVC 项目上覆盖 WFFM 的 succesredirect

c# - WPF:是否有可能将 "route"普通鼠标事件转换为 Windows 7 中的触摸事件

c# - 将 Java 应用程序连接到 WCF Web 服务时出错

c# - Task.Delay 值得取消吗?

wcf - 将用 [DataContract] 装饰的对象放入 StateServer?

java - 如何手动序列化一个类?

c# - 检查列表中的文件是否存在

c# - 通过反射获取 Private Func<T> 成员

java - OutputStream 与 ByteArrayOutputStream 不写入

c# - 来自 WebService 的未经净化的 XML,如何净化