Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从WCF服务公开未知类型的对象_Wcf - Fatal编程技术网

从WCF服务公开未知类型的对象

从WCF服务公开未知类型的对象,wcf,Wcf,因为我不知道数据库中会有什么类型的数据,所以我想从这个服务返回对象,但它给了我一个异常 请让我知道我如何才能做到这一点 提前感谢您可以使用“raw”消息数据类型执行某些操作-但这真的不是很好的编程 请在此处阅读: 您可以使用“raw”消息执行某些操作数据类型-但这真的不是很好的编程 请在此处阅读: 您不能返回对象并期望它能工作。原因是,在这段代码背后,WCF引擎使用序列化。当客户端接收到消息时,它必须能够将其反序列化回某个对象,但要做到这一点,它必须知道它接收到的对象的类型 如果要发

因为我不知道数据库中会有什么类型的数据,所以我想从这个服务返回对象,但它给了我一个异常

请让我知道我如何才能做到这一点


提前感谢

您可以使用“raw”
消息
数据类型执行某些操作-但这真的不是很好的编程

请在此处阅读:


您可以使用“raw”
消息执行某些操作
数据类型-但这真的不是很好的编程

请在此处阅读:


您不能返回
对象
并期望它能工作。原因是,在这段代码背后,WCF引擎使用序列化。当客户端接收到消息时,它必须能够将其反序列化回某个对象,但要做到这一点,它必须知道它接收到的对象的类型


如果要发送“未知”数据,请使用
XElement
。客户端将只接收XML,它将负责处理它(解析它、反序列化它或其他任何内容)。

您不能返回
对象,而期望它能工作。原因是,在这段代码背后,WCF引擎使用序列化。当客户端接收到消息时,它必须能够将其反序列化回某个对象,但要做到这一点,它必须知道它接收到的对象的类型

如果要发送“未知”数据,请使用
XElement
。客户端将只接收XML,它将负责处理它(解析它、反序列化它或其他)

[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;
 }