0
我在MonoTouch(6.0.2)中使用帶有BasicHttpBinding的WCF來使用.net WCF服務, 我傳遞了3個參數,其類型爲int,int ,DishOrder(用戶自定義類型),在服務器站點中,它可以正確讀取int參數,但用戶定義的對象(dishOrder)始終爲空,爲什麼?MonoTouch 6.0.2:爲什麼不能在使用WCF服務時序列化對象
我已經在用戶定義的類型類中使用了[DataContract]屬性標記。
在MonoTouch的(客戶端代碼:)
[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...
}
}