【发布时间】:2020-01-15 21:32:58
【问题描述】:
我有这个 Dto 模型类:
[System.Runtime.Serialization.DataContract, System.Serializable]
public class DataObj
{
[System.Runtime.Serialization.DataMember]
public object Value { get; set; }
public static DataObj CreateDataObj(object obj)
{
return new DataObj { Value = obj };
}
}
static void main()
{
var obj1 = DataObj.CreateDataObj(10);
wcfService.Send(obj1);
var obj2 = DataObj.CreateDataObj("hello");
wcfService.Send(obj2);
var obj3 = DataObj.CreateDataObj(new int[]{10, 20,30});
wcfService.Send(obj3);
var obj4 = DataObj.CreateDataObj(new string[]{"ht", "fd","xs"});
wcfService.Send(obj4);
}
在main 方法中,对 obj 1 和 2 的 WCF 调用正常,但对于 obj 3 和 4 则不正常并引发序列化异常。
如何在服务调用中传输 obj 3 和 4?
【问题讨论】:
-
顺便说一句,创建一个允许传递任何旧对象的合约是一种反模式。您永远不知道允许发送什么,服务也永远无法预测它将接收什么。最终结果是您不知道该服务可以执行哪些操作
-
哦,这段代码现在已经在应用中实现和使用,无法重新实现,请问有什么办法解决这个问题吗?@MickyD
-
[Serializable]和[DataMember]不属于一起。两个不同的序列化器。 -
“现在在应用程序中使用,不可能重新实现” - 考虑到你得到
serialisation exceptions,总是时候“重新实现”
标签: c# wcf serialization