Is the System.Tuple
class supported by WCF's Data Contract Serializer (i.e., can I pass Tuple
objects to WCF calls and/or receive them as part or all of the result)?
I found this page, but not the clear, definitive "you can send and receive Tuples with WCF" answer I was hoping for.
I'm guessing that you can, as long as all of the types within the Tuple
itself are supported by the Data Contract Serializer -- can anyone provide me with a more definitive answer? Thanks.
The
Tuple
types are marked withSerializableAttribute
, therefore, if the types you store within are serializable, they should be able to be serialized by WCF as well.Check out: links of Tuple'1, Tuple'2, etc. It says:
Note that the document you linked contains the following line:
So, it may not be as easy as it would seem.
(BTW, the Tuple static class is also worth checking out.)
I was just digging into this myself, and it seems that one issue might be if you're consuming the WCF service through Silverlight: see Davy Brion's blog for more.
The Silverlight version of Tuple doesn't have the Serializable attribute, which poses an issue at present.
I have Tuples working nicely with .NET 4.0 and WCF (reminder: you need .NET 4.0 for Tuple support).
Here is the unit test method (which calls the method via the WCF layer):
Here is the interface:
Here is the implementation:
I just tested it by debugging using a "WCF Service Application" (see New..Project), which serves the WCF service. I use this method for debugging, as I can use the debugger to step seamlessly from the WCF client into the WCF service , and back again, which is quite useful at times.
I've also just tested this method by deploying it to both a console app, and a service app, so its definitely working for me.