我正在尝试完成从WCF REST JSON服务向Silverlight客户端发送System.Type实例的任务。虽然System.Type被标记为Serializable,但是如果我尝试让我的OperationContract方法实现返回System.Type,则我的WCF服务会响应服务器错误。例如,
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "type")]
public Type getType()
{
return typeof(string);
//request error: The server encountered an error processing the request. See server logs for more details.
}
我还没有将System.Type序列化以使用System.Web.Script.Serialization.JavaScriptSerializer或DataContractSerializer。我只有序列化才能与BinaryFormatter一起使用。问题是,Silverlight 4没有BinaryFormatter。我找到了this Silverlight二进制序列化库,看起来很有希望但是没有成功序列化System.Type。
有没有人对如何从WCF服务序列化System.Type然后从Silverlight反序列化有任何想法?工作解决方案的代码段示例将非常有用并且受到赞赏。
答案 0 :(得分:1)
Type
无法以所描述的方式使用(并注意[Serializable]
仅适用于BinaryFormatter
)。您最好的选择是在AssemblyQualifiedName
处运输并在每端加载,但请注意,您需要在每一端都使用声明组件才能使其正常工作。
最终,平台之间发送Type
的目标并没有多大意义,我很害怕。如果您可以更具体地了解您想要完成,我们可以建议更好的计划吗?