WCF:不支持多维数组

本文关键字:数组 不支持 WCF | 更新日期: 2023-09-27 18:12:14

具有多维数组的不同对象需要通过WCF netttcpbinding连接。WCF在尝试时抛出"不支持多维数组"。

我不能改变这个类的接口。我将创建一个包装器,它将在通过wcf之前对对象进行二进制序列化(即使netttcpbinding应该是二进制传输)。我说的对吗?

我正在寻找一个优雅的通用设计来做这种转移。在我开始开发(c#。net 4)之前,社区有什么建议吗?

WCF:不支持多维数组

您可以更改WCF服务的接口以接受byte[]而不是有问题的类吗?您的类仍然可以具有多维数组,但不是传递实例,而是将其序列化为byte[]并将其作为参数传递。我想这就是@John Willemse说的。

编辑:听起来你可以接受更改WCF服务接口,因为看起来你还没有完全充实。没有你的原始代码,我有点受限,但像这个例子应该有助于指导你:

改变:

[ServiceContract]
public interface IShipmentManagement
{
    [OperationContract]
    void Process(Shipment shipment);
}

:

[ServiceContract]
public interface IShipmentManagement
{
    [OperationContract]
    void Process(byte[] serializedShipment);
}

然后在调用WCF服务的代码中,您需要二进制序列化"Shipment"实例,如下所示:

var shipmentManagement = // however you get a reference to your WCF service
var shipment = new Shipment();
// populate your array or whatever
IFormatter formatter = new BinaryFormatter();
var ms = new MemoryStream();
formatter.Serialize(stream, shipment);
var serializedShipment = ms.ToArray();
shipmentManagement.Process(serializedShipment);

另一方面,你只需要反序列化byte[]并将实例传递给你拥有的任何代码。如果你需要更多的说明,请告诉我。