How to pass a user defined type to a Webservice?

H

Henke

I know the webservice can have methods that take (some) .NET types as
arguments, but is it possible to write a method that takes a user defnined
class as a parameter? If yes, can someone please show me an example?

Thanks in advance?

/Henke
 
H

Henke

Can the classes have any methods or am I stuck to creating clases with
public properties, only?
/Henke

Wor Tony said:
Henke said:
I know the webservice can have methods that take (some) .NET types as
arguments, but is it possible to write a method that takes a user defnined
class as a parameter? If yes, can someone please show me an example?

Thanks in advance?

/Henke
Create your class in your chosen .Net language (or create an .xsd schema
and generate the classes using xsd.exe).

Write your webmethod:
[WebMethod]
public MyReturnClass AcceptMyClass(MyInputClass myInputClass)
{
// do something with the input class and return an instance of
// MyReturnClass
}

that's about it!

HTH

Wor Tony
Nottingham - UK
 
S

Sam Vanhoutte

Henke said:
Can the classes have any methods or am I stuck to creating clases with
public properties, only?
/Henke
The classes can have methods, but these methods are not serialized, as they
never contain state...
Clients need to have objects with the same properties, but they don't need
to have these methods...
 
S

Simon Smith

Wor Tony said:
Yep. As Sam has already said, no methods, just public properties.

If you create an xsd, then the client and your web service can validate the
objects using
schema validation.

HTH

AP
Nottingham - UK

The way to do this is:

First create the classes you want to send in a separate assembly. In
the Web Service project reference that assembly and construct and
return the class you want.
In the Client project reference the assembly containing the class(es)
you want to sent. Then create (or update) the Web Reference.
Now open up the Reference.cs associated with the Web reference. At the
bottom you will find a class definition containing the fields og the
class as public fields. DELETE THIS BIT OF CODE!
At the top of the Reference.cs add a 'using' for the assembly which
contains the passed class, and add the same using wherever you call
the Web Service. Compile. Go.

If later you update the Web reference the deleted class definition
will be reinstated and the client will not compile. Fine. Go back and
delete the generated class definition and add the using to the
Reference.cs and all will be OK.

HTH
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,810
Latest member
Kassie0918

Latest Threads

Top