Datacontract で構造体の配列を返す必要があります。私はそれを作ることができません。配列の値を設定するとエラーが発生します。
Datacontract 宣言は次のとおりです。
[DataContract]
public class invoice_data
{
[DataMember]
public Invoice_Body_Item[] invoice_body;
}
[StructLayout(LayoutKind.Sequential)]
public struct Invoice_Body_Item
{
public string Item_Description;
public decimal Item_Value;
}
}
メソッドコードは次のとおりです。
invoice_data Invoice = new invoice_data();
object tr_bl = svr.GetInvoiceData(inputparams.ck, svr.Confirm(inputparams.ck));
for (int i = ((Array)(((object[])(tr_bl))[1])).GetLowerBound(0); i <= ((Array)(((object[])(tr_bl))[1])).GetUpperBound(0); i++)
{
Invoice.invoice_body[i].Item_Description = (string)((object[])(((object[])(((object[])(tr_bl))[1]))[i]))[0];
Invoice.invoice_body[i].Item_Value = (decimal)((object[])(((object[])(((object[])(tr_bl))[1]))[i]))[1];
}
}
この行で、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。
Invoice.invoice_body[i].Item_Description = (string)((object[])(((object[])(((object[])(tr_bl))[1]))[i]))[0];