我有一个WCF服务,它返回一个类对象。如何在客户端应用程序中访问这些返回值。
服务代码:
public ET_ITAM_RequestDetails GetAssociateFreewareRequestDetails(ET_ITAM_RequestDetails objET_ITAM_RequestDetails)
{
SqlDataReader rdr = null;
connect.Open();
SqlCommand cmd = new SqlCommand("ET_ITAM_GetAssociateFreewareRequestDetails", connect);
cmd.CommandType = CommandType.StoredProcedure;
while (rdr.Read())
{
objET_ITAM_RequestDetails.AssociateID = (string)rdr[0];
objET_ITAM_RequestDetails.AssetID = (string)rdr[1];
objET_ITAM_RequestDetails.ETRequestID = (int)rdr[2];
objET_ITAM_RequestDetails.FreewareName = (string)rdr[3];
objET_ITAM_RequestDetails.InstallationCommand = (string)rdr[4];
objET_ITAM_RequestDetails.InstallationArguments = (string)rdr[5];
objET_ITAM_RequestDetails.VerificationType = (bool)rdr[6];
objET_ITAM_RequestDetails.VerificationPath = (string)rdr[7];
}
return objET_ITAM_RequestDetails;
}
在客户端:
ServiceReference1.ET_ITAM_RequestDetails objItam = new
ServiceReference1.ET_ITAM_RequestDetails();
// need to get return value.
// if i create another object it not work as expected
obj_service.GetAssociateFreewareRequestDetails(objItam);
根据ServiceReference1
判断,您似乎已经成功地将WCF引用添加到客户端解决方案中。然而,据我所知,您缺少WCF客户端。
你还没有提供足够的信息来知道你的客户会被称为什么,但你的代码应该看起来像:
ServiceReference1.ET_ITAM_RequestDetails objItam = new
ServiceReference1.ET_ITAM_RequestDetails();
// the service generation will create a WCF client for you, thought I'm not sure what your client's name would be.
objItam = obj_service.GetAssociateFreewareRequestDetails(objItam);
再次查看您的代码,我想我看到了您的问题。您对wcf客户端进行了更新,但没有提供相应的代码。
obj_service.GetAssociateFreewareRequestDetails(objItam);
您只是简单地调用函数,而不是将其值分配回对象。
objItam = obj_service.GetAssociateFreewareRequestDetails(objItam);
我不清楚你为什么要新建一个空对象,把它传递到你的函数中,然后返回它。为什么不只是新建它,然后在函数中返回它呢?
public ET_ITAM_RequestDetails GetAssociateFreewareRequestDetails()
{
ET_ITAM_RequestDetails objET_ITAM_RequestDetails = new ET_ITAM_RequestDetails();
SqlDataReader rdr = null;
connect.Open();
SqlCommand cmd = new SqlCommand("ET_ITAM_GetAssociateFreewareRequestDetails", connect);
cmd.CommandType = CommandType.StoredProcedure;
while (rdr.Read())
{
objET_ITAM_RequestDetails.AssociateID = (string)rdr[0];
objET_ITAM_RequestDetails.AssetID = (string)rdr[1];
objET_ITAM_RequestDetails.ETRequestID = (int)rdr[2];
objET_ITAM_RequestDetails.FreewareName = (string)rdr[3];
objET_ITAM_RequestDetails.InstallationCommand = (string)rdr[4];
objET_ITAM_RequestDetails.InstallationArguments = (string)rdr[5];
objET_ITAM_RequestDetails.VerificationType = (bool)rdr[6];
objET_ITAM_RequestDetails.VerificationPath = (string)rdr[7];
}
return objET_ITAM_RequestDetails;
}
如果你的读者有不止一行,上面(和你的原文)当然会(可能)产生意想不到的结果——只是在你不知道的情况下喊出来。