Afshin
Afshin

Reputation: 23

WCF Service Contract

I have a problem using an custom data type in a WCF service method, below is my sample code

[ServiceContract()]
public class SampleServise : ISampleServise
{
    void object GetSomething(ICustomData objectData)
    {
       // Do Something
    }
}

What shall I do with ICustomData class interface?

Thanks Afshin

Upvotes: 1

Views: 753

Answers (1)

marc_s
marc_s

Reputation: 755361

WCF is based on message passing, and that message passing is modelled using XML schema (XSD). As such, whatever can be expressed in XML schema can be used in WCF.

This also means: interfaces are not supported. You need to use actual, concrete types for the parameters in your WCF service methods.

In your case, create a concrete class that implements ICustomData and then use that class as the parameter type.

For a good reference, read MSDN Designing Service Contracts which states for parameters:

Parameters and Return Values

Each operation has a return value and a parameter, even if these are void. However, unlike a local method, in which you can pass references to objects from one object to another, service operations do not pass references to objects. Instead, they pass copies of the objects.

This is significant because each type used in a parameter or return value must be serializable; that is, it must be possible to convert an object of that type into a stream of bytes and from a stream of bytes into an object.

Upvotes: 2

Related Questions