C# WCF返回的客户端中的访问对象

C# WCF返回的客户端中的访问对象,c#,wcf,C#,Wcf,我有一个WCF服务,它返回一个类对象。如何在客户端应用程序中访问这些返回值 服务代码: public ET_ITAM_RequestDetails GetAssociateFreewareRequestDetails(ET_ITAM_RequestDetails objET_ITAM_RequestDetails) { SqlDataReader rdr = null; connect.Open(); SqlCommand cmd = new SqlCommand("ET

我有一个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);

通过
servicerence1
判断,您似乎已成功地将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;
}

如果您的读者不止一行,上述(以及您的原件)当然会(可能)产生意外的结果-只是在您不知道的情况下调用它。

不要对WCF客户端使用
使用
:我已成功地在我的客户端中添加了服务引用,如下所示。ServiceReference1.ETServiceClient对象服务=新的ServiceReference1.ETServiceClient();我在客户机中添加了一个ET_ITAM_RequestDetails对象,它是来自我的服务的返回类型。ServiceReference1.ET_ITAM_RequestDetails objItam=新的ServiceReference1.ET_ITAM_RequestDetails();