wcf中返回包含二维数组对象的问题

JDD1997 2017-03-29 07:32:52
请知道的兄弟指点一下,谢谢

有一个类,其基本结构我不能改动.代码如下:

public class C1
{
public object[,] Data; //注意这里是一个二维数组
}


现在程序需要使用wcf通讯,并将该类作为数据进行传输,所以我为其加上了数据契约标记和数据成员标记,如下

[DataContract()]
public class C1
{
[DataMember()]
public object[,] Data; //注意这里是一个二维数组
}


结果只要有任何一个操作契约是以该类为返回值类型,客户端就报错,经查询得知是因为wcf的序列化不支持对多维数组进行序列化所致.

请问在不改动该类基本结构的情况下,有没有什么办法能让wcf传输这个类呢?

注:我的程序不需要考虑跨平台/语言

...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JDD1997 2017-04-29
  • 打赏
  • 举报
回复
搜了很多资料,中文的英文的能看的基本都看了,都说无法实现用WCF传输二维数组,只能使用交错数组(也叫锯齿数组)代替.
Poopaye 2017-03-29
  • 打赏
  • 举报
回复
DataContract不要了啊
JDD1997 2017-03-29
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
实现ISerializable
请问是这样吗?我实现了ISerializable接口,但是wcf服务端启动时报错 System.Runtime.Serialization.InvalidDataContractException: 类型“WcfServiceLibrary1.C1”不能为 ISerializable,且不能具有 DataContractAttribute 特性。

[DataContract()]
public class C1 : ISerializable
{

	[DataMember()]

	public object[,] Data;
	public C1()
	{
		Data = new object[1, 1];
	}

	public C1(SerializationInfo info, StreamingContext context)
	{
		Data = new object[1, 1];
		Data(0, 0) = info.GetString("1");
	}

	public void GetObjectData(SerializationInfo info, StreamingContext context)
	{
		info.AddValue("1", Data(0, 0));
	}
}
Poopaye 2017-03-29
  • 打赏
  • 举报
回复
实现ISerializable

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧