.net WCFサービスを使用するためにmonotouch(6.0.2)でBasicHttpBindingを使用してWCFを使用します。サーバーサイトで、タイプがint、int、DishOrder(ユーザー定義タイプ)の3つのパラメーターを渡します。 intパラメーターは正しくありますが、ユーザー定義オブジェクト(dishOrder)は常にnullです。なぜですか?
ユーザー定義型クラスで[DataContract]属性マークをすでに使用しました。
モノタッチで(クライアント側コード:)
[DataContract]
public class DishOrder2
{
[DataMember]
public int BillID { get; set; }
[DataMember]
public int TableID { get; set; }
}
public partial interface IMenuContract
{
[OperationContract]
int OpenTable(int tableID, int lastVerNo,DishOrder2 order);
}
public partial class MyServiceClient : ClientBase<IMenuContract>,IMenuContract {
public int OpenTable(int tableID, int lastVerNo,DishOrder2 order)
{
return Channel.OpenTable(tableID,lastVerNo,order);
}
private partial class FDMenuServiceClientChannel
{
public int OpenTable(int tableID, int lastVerNo,DishOrder2 order)
{
object[] _args = new object[3];
_args[0]=tableID;
_args[1]=lastVerNo;
_args[2]=order;
return (int)base.Invoke("OpenTable", _args);
}
}
} //end of public partial class FDMenuServiceClient
pulic void CallServiceTest()
{
using (MyServiceClient.serviceClient = MyServiceClient.CreateServiceClient ()) {
DishOrder2 test=new DishOrder2();
test.BillID=123;
test.TableID=456;
serviceClient.OpenTable(111,222,test);
}
}
サービスサイト(.net 3.5)コード:
[DataContract]
public class DishOrder2
{
[DataMember]
public int BillID { get; set; }
[DataMember]
public int TableID { get; set; }
}
[OperationContract]
int OpenTable(int tableID, int lastVerNo,DishOrder2 order);
public int OpenTable(int tableID, int lastVerNo,DishOrder2 dishOrder) //service implementation
{
try
{
//**---why the object:dishorder is null?** throw the nullref exception
if (dishOrder.BillID>0) ...
//**tableID & lastVerNo is read OK 111,222**
...
}
catch (Exception ex)
{
throw FaultException...
}
}