This is my first attempt at writing/using web services, so any and all comments will be greatly appreciated. With that said, I am also by no means saying this is the correct either. I have noticed that when returning a new TPastePart, created and filled by the web service, that if the "PastePartID" and "PastePart" properties do not have "set" accessor methods, their respective data is not returned, even though the object has contains that information. So my solution, not one I like mind you, is to put in a blank "set" method for each. I have to main questions. First, why does this happen; and secondly, what's the most appropriate way of doing this? Thanks in advance, Randel // ************************************************************************ public class TPastePart{ //---------------------------------------------------------------------- private int FPastePartID; private string FPastePart; private string FPastePartNumber; private string FPastePartDescription; //---------------------------------------------------------------------- public TPastePart(){ FPastePartID = 0; FPastePart = ""; FPastePartNumber = ""; FPastePartDescription = ""; } //---------------------------------------------------------------------- public TPastePart(int PastePartID, string PastePartNumber, string PastePartDescription, string PastePart){ FPastePartID = PastePartID; FPastePart = PastePart; FPastePartNumber = PastePartNumber; FPastePartDescription = PastePartDescription; } //---------------------------------------------------------------------- public int PastePartID{ get{return(FPastePartID);} set{} } //---------------------------------------------------------------------- public string PastePart{ get{return(FPastePart);} set{} } //---------------------------------------------------------------------- public string PastePartNumber{ get{return(FPastePartNumber);} set{ FPastePartNumber = value; FPastePart = FPastePartNumber + " " + FPastePartDescription; } } //---------------------------------------------------------------------- public string PastePartDescription{ get{return(FPastePartDescription);} set{ FPastePartDescription = value; FPastePart = FPastePartNumber + " " + FPastePartDescription; } } } // ************************************************************************ //***** WEB SERVICE ****************************************************** // ************************************************************************ //----------------------------------------------------------------------- [WebMethod(Description="Retrieve the information for the given paste part ID.")] public TPastePart PastePart_Get(int PastePartID){ TPastePart PastePart = null; ConnectionStringSettings Cs = ConfigurationManager.ConnectionStrings["ECS"]; SqlConnection SqlCon = new SqlConnection(); SqlCommand SqlCmd = new SqlCommand(); SqlDataReader SqlReader = null; try{ SqlCmd.CommandText = "ccisp_PastePart_Get"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlCmd.Connection = SqlCon; SqlCmd.Parameters.Add(new SqlParameter("@RETURN_VALUE", SqlDbType.Int, 4, ParameterDirection.ReturnValue, true, ((System.Byte)(10)), ((System.Byte)(0)), "", DataRowVersion.Current, null)); SqlCmd.Parameters.Add(new SqlParameter("@PastePartID", SqlDbType.Int, 4, ParameterDirection.Input, false, ((System.Byte)(10)), ((System.Byte)(0)), "", DataRowVersion.Current, PastePartID)); SqlCon.ConnectionString = (string)Cs.ConnectionString; SqlCon.Open(); SqlReader = SqlCmd.ExecuteReader(); if(SqlReader.HasRows){ SqlReader.Read(); PastePart = new TPastePart(SqlReader.GetInt32(0), // PastePartID SqlReader.GetString(1), // PastePartNumber SqlReader.GetString(2), // PastePartDescription SqlReader.GetString(3)); //PastePart }//END IF-STATEMENT "if(SqlReader.HasRows)" }//END TRY-BLOCK catch(Exception E){ HandleWebException(E); }//END CATCH-BLOCK finally{ SqlCon.Close(); }//END FINALLY-BLOCK return(PastePart); } // ************************************************************************ //***** WEB SERVICE RESULTS ********************************************** // ************************************************************************ //WITH "set" ACCESSOR METHOD********************************************** <TPastePart> <PastePartID>1</PastePartID> <PastePart>46-141 7% Platinum Paste</PastePart> <PastePartNumber>46-141</PastePartNumber> <PastePartDescription>7% Platinum Paste</PastePartDescription> <PasteViscosityID>1</PasteViscosityID> </TPastePart> // ************************************************************************ //WITH OUT "set" ACCESSOR METHOD ***************************************** <TPastePart> <PastePartNumber>46-141</PastePartNumber> <PastePartDescription>7% Platinum Paste</PastePartDescription> <PasteViscosityID>1</PasteViscosityID> </TPastePart> // ************************************************************************
On Oct 17, 12:52 pm, "John Saunders [MVP]" <john.saunders at [quoted text, click to view] trizetto.com> wrote: > "rbjorkquist" <rbjorkqu...@coilcraft.com> wrote in message > > news:1192642409.832777.106490@q5g2000prf.googlegroups.com... > > > This is my first attempt at writing/using web services, so any and all > > comments will be greatly appreciated. With that said, I am also by no > > means saying this is the correct either. > > > I have noticed that when returning a new TPastePart, created and > > filled by the web service, that if the "PastePartID" and "PastePart" > > properties do not have "set" accessor methods, their respective data > > is not returned, even though the object has contains that > > information. So my solution, not one I like mind you, is to put in a > > blank "set" method for each. > > > I have to main questions. First, why does this happen; and secondly, > > what's the most appropriate way of doing this? > > You've found it. Add the setter. > > This is a requirement of XML serialization. You'd have to ask Microsoft w= hy > they require it. > -- > -------------------------------------------------------------------------= --=AD----- > John Saunders | MVP - Windows Server System - Connected System Developer
Hey John, Thanks for the quick response. But just to make sure I'm understanding what you are saying. Just add a blank setter method, like I'm doing is ok? There will be no ill side affects? And, why if I leave it blank, does it know how to give me the rest of the data? I mean, I'm not telling it or doing anything special. Actually, I'm not doing anything. Thanks again, Randel
[quoted text, click to view] "rbjorkquist" <rbjorkquist@coilcraft.com> wrote in message news:1192642409.832777.106490@q5g2000prf.googlegroups.com... > This is my first attempt at writing/using web services, so any and all > comments will be greatly appreciated. With that said, I am also by no > means saying this is the correct either. > > I have noticed that when returning a new TPastePart, created and > filled by the web service, that if the "PastePartID" and "PastePart" > properties do not have "set" accessor methods, their respective data > is not returned, even though the object has contains that > information. So my solution, not one I like mind you, is to put in a > blank "set" method for each. > > I have to main questions. First, why does this happen; and secondly, > what's the most appropriate way of doing this?
You've found it. Add the setter. This is a requirement of XML serialization. You'd have to ask Microsoft why they require it. -- -------------------------------------------------------------------------------- John Saunders | MVP - Windows Server System - Connected System Developer
[quoted text, click to view] "rbjorkquist" <rbjorkquist@coilcraft.com> wrote in message news:1192651370.735507.88330@t8g2000prg.googlegroups.com... On Oct 17, 12:52 pm, "John Saunders [MVP]" <john.saunders at trizetto.com> wrote: > "rbjorkquist" <rbjorkqu...@coilcraft.com> wrote in message > > news:1192642409.832777.106490@q5g2000prf.googlegroups.com... > > > This is my first attempt at writing/using web services, so any and all > > comments will be greatly appreciated. With that said, I am also by no > > means saying this is the correct either. > > > I have noticed that when returning a new TPastePart, created and > > filled by the web service, that if the "PastePartID" and "PastePart" > > properties do not have "set" accessor methods, their respective data > > is not returned, even though the object has contains that > > information. So my solution, not one I like mind you, is to put in a > > blank "set" method for each. > > > I have to main questions. First, why does this happen; and secondly, > > what's the most appropriate way of doing this? > > You've found it. Add the setter. > > This is a requirement of XML serialization. You'd have to ask Microsoft > why > they require it. > -- > -------------------------------------------------------------------------------- > John Saunders | MVP - Windows Server System - Connected System Developer
Hey John, Thanks for the quick response. But just to make sure I'm understanding what you are saying. Just add a blank setter method, like I'm doing is ok? There will be no ill side affects? And, why if I leave it blank, does it know how to give me the rest of the data? I mean, I'm not telling it or doing anything special. Actually, I'm not doing anything. ---------- Yes, just leave a blank setter. This is just a restriction of the serializer. As long as you don't need to deserialize that type, you'll be ok with a setter that does nothing. -- -------------------------------------------------------------------------------- John Saunders | MVP - Windows Server System - Connected System Developer
rbjorkquist <rbjorkquist@coilcraft.com> wrote in news:1192651370.735507.88330@t8g2000prg.googlegroups.com: [quoted text, click to view] > Thanks for the quick response. But just to make sure I'm > understanding what you are saying. Just add a blank setter method, > like I'm doing is ok? There will be no ill side affects? And, why if > I leave it blank, does it know how to give me the rest of the data? I > mean, I'm not telling it or doing anything special. Actually, I'm not > doing anything.
You can even set the set to private... As long as you're not serializing the object BACK to the server, I believe you can have a private settor.
Don't see what you're looking for? Try a search.
|