我有一个Silverlight客户端和一个WCF服务,我想要共享一个类:
[DataContract]
public class DatesAreFun
{
[DataMember]
private readonly DateTime _date;
[DataMember]
private readonly bool _isFun;
public DateTime DateTime { get { return _date; } }
public bool IsFun { get { return _isFun; } }
public DatesAreFun(DateTime date, bool isFun)
{
_date = date;
_isFun = fun;
}
}
WCF方似乎通过网络发送了适当的数据,但Silverlight方面并不喜欢它。它将WCF服务DatesAreFun类视为与我的DatesAreFun类不同的类。
有关如何最好地解决此问题的任何建议?谢谢!
答案 0 :(得分:1)
这是一个常见问题,已在此处讨论过几次。
添加服务引用时,请确保单击高级按钮,然后确保勾选了引用程序集中的重用类型复选框,并选中在所有引用的程序集中重用类型选项。
您还必须创建一个面向Silverlight运行时的新类库程序集。这是因为WCF服务引用的类库将以.Net框架的完整(或可能是客户端配置文件)版本为目标,而Silverlight程序集无法做到(实际上Silverlight程序集只能引用其他Silverlight目标程序集)。在您的新类库中,您可以引用完整版本的类库所使用的相同物理文件,这更详细here(我曾经有过同样的问题......)。您也可以通过this bunch of search results选择相关问题。
根据您的工作方式,您可能会发现您还必须浏览服务引用的 Reference.cs 文件,并更改指定数据实体的名称空间。 (如果更新或重新配置服务引用,将重新生成此文件。)