問題のクラスの代わりに byte[] を受け入れるように WCF サービスのインターフェイスを変更できますか? クラスは引き続き多次元配列を持つことができますが、インスタンスを渡す代わりに、それを byte[] にシリアル化し、それをパラメーターとして渡します。それが@John Willemseの言っていることだと思います。
編集: 100% 肉付けされていないように見えるため、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[] を逆シリアル化し、インスタンスを任意のコードに渡すだけです。さらに明確にする必要がある場合はお知らせください。