开发者

Exposing object of unknown type from a WCF service

[OperationContract]
public object  GetDeserializedObject(int partyContactID)
{
   PartyContact partyContact = GetPartyContactById(partyContactID);
   ContactTermResultQueue resultQueue = GetContactTermResultQueueByID(partyContact.TemplateQueueID);
   byte[] contactDataSetArray = resultQueue.QueryResult;
   //Getting DataSet from the byte array
   BinaryFormatter binaryFormatter = new BinaryFormatter();
   Stream mStreamtoRead = new MemoryStream(contactDataSetArray);
   object o = binaryFormatter.Deserialize(mStreamtoRead);

   mStreamtoRead.Close();
   object returnData=null;
   if (o.GetType().IsArray)
   {
      object[] os = o as object[];
      var value = from vs in os where (int) (vs.GetType().GetProperty("PartyID").GetValue(vs, null)) == partyContact.PartyID select vs;
      if (value.Count() > 0)
      {
         returnData = value.First();
      }
    }
    return returnData;
 }
开发者_C百科

As I don't know what type of data we are going to have in the database, so wanted to return the object from this service, but it is giving me an exception.

Please let me know how can I achieve this?

Thanks in advance


You can't return object and expect it will work. The reason is that behind this code WCF engine uses serialization. When client receives message it must be able to deserialize it back to some object but to be able to do that it must know what type of object it received.

If you want to send "unknown" data use XElement. Client will receive just XML and it will be its responsibility to deal with it (parse it, deserialize it or whatever).


You can do certain things with the "raw" Message data type - but it's really not pretty programming...

Read about it here:

  • How to pass arbitrary data in a Message object using WCF

  • WCF : Untyped messages on WCF operations.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜