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