gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:16 25 4
gpt4 key购买 nike

我有一个对象,我们称它为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com