2016-04-14 16 views
1

Bir sınıf nesnesini döndüren bir WCF hizmetim var. Müşteri başvurumda bu geri dönüş değerlerine nasıl erişebilirim.WCF tarafından iade edilen istemcide erişim nesnesi

servis kodu: istemci olarak

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; 
} 

: başarıyla istemci çözümü için WCF referansı eklemişsiniz

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); 

cevap

1

ServiceReference1 bakılırsa görünüyor. Ancak WCF istemcisini anlatabildiğim kadar özlüyorsunuz.

kullanıcıyı müşteri çağrılacak olurdu bilmek için yeterli bilgi verilmiş değil, ama gibi görünmelidir kodunuzu:


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); 
tekrar kod üzerinde bakıldığında, ben sorunu burada düşünüyorum . Wcf istemcinizi yeni yaptınız, ancak bunun için kod sağlanmadı.

obj_service.GetAssociateFreewareRequestDetails(objItam); 

Sadece işlevi çağırıyorsunuz, ancak değerini tekrar nesnenize atamıyorsunuz.

objItam = obj_service.GetAssociateFreewareRequestDetails(objItam); 

ben size işlevi içine geçen ve dönen, newing kadar boş bir nesne olmanın nedeni belirsiz değilim. Neden sadece yeni bir şey değil ve bu işlevin içinde geri döndürüyoruz?

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; 
} 

yukarıdaki (ve orijinal) olacak elbette okuyucu birden fazla satır varsa (muhtemelen) istenmeyen sonuçlara sahip - Sadece habersiz durumda olduğunu seslendiğini.

+0

** WCF istemcileriyle 'using' kullanmayın **: [Kullanma Bildirimi ile İlgili Sorunları Önleme] (https://msdn.microsoft.com/en-us/library/aa355056 (v = vs.110) .aspx) – Tim

+0

Müvekkilimde servis referansını aşağıdaki gibi başarıyla ekledim. ServiceReference1.ETServiceClient obj_service = yeni ServiceReference1.ETServiceClient(); Servisimde iade tipi olan istemcide bir ET_ITAM_RequestDetails nesnesini ekliyorum. ServiceReference1.ET_ITAM_RequestDetails objItam = new ServiceReference1.ET_ITAM_RequestDetails(); – jerin

İlgili konular