[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;
}
由于我不知道我们将在数据库中拥有什么类型的数据,所以想要从该服务返回该对象,但它给了我一个例外。
请让我知道如何实现这一目标?
提前致谢
答案 0 :(得分:2)
您可以使用“原始”Message
数据类型执行某些操作 - 但它确实不是很好的编程......
在这里阅读:
答案 1 :(得分:2)
您无法返回object
并希望它能够正常运行。原因是此代码背后的WCF引擎使用序列化。当客户端收到消息时,它必须能够将其反序列化回某个对象,但为了能够这样做,它必须知道它接收的对象类型。
如果您想发送“未知”数据,请使用XElement
。客户端只接收XML,它将负责处理它(解析它,反序列化它或其他)。