467,907 Members | 1,655 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,907 developers. It's quick & easy.

Help with returning a C# object from a web service

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>
//
************************************************** **********************

Oct 17 '07 #1
  • viewed: 1331
Share:
4 Replies
"rbjorkquist" <rb*********@coilcraft.comwrote in message
news:11**********************@q5g2000prf.googlegro ups.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
Oct 17 '07 #2
On Oct 17, 12:52 pm, "John Saunders [MVP]" <john.saunders at
trizetto.comwrote:
"rbjorkquist" <rbjorkqu...@coilcraft.comwrote in message

news:11**********************@q5g2000prf.googlegro ups.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.

Thanks again,

Randel

Oct 17 '07 #3
"rbjorkquist" <rb*********@coilcraft.comwrote in message
news:11*********************@t8g2000prg.googlegrou ps.com...
On Oct 17, 12:52 pm, "John Saunders [MVP]" <john.saunders at
trizetto.comwrote:
"rbjorkquist" <rbjorkqu...@coilcraft.comwrote in message

news:11**********************@q5g2000prf.googlegro ups.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
Oct 23 '07 #4
rbjorkquist <rb*********@coilcraft.comwrote in
news:11*********************@t8g2000prg.googlegrou ps.com:
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.

BTW, were you a Delphi programmer previously?
Oct 23 '07 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Liza | last post: by
1 post views Thread by Matthias De Ridder | last post: by
2 posts views Thread by Ken Crismon | last post: by
15 posts views Thread by Joseph Geretz | last post: by
5 posts views Thread by Frank Hauptlorenz | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.