C# WCF和Silverlight项目之间的问题共享域模型

C# WCF和Silverlight项目之间的问题共享域模型,c#,wcf,silverlight-3.0,C#,Wcf,Silverlight 3.0,我正在编写一个大型Silverlight应用程序。 我目前正在编写数据检索元素 我现在遇到了问题 我有一个包含对象的公共项目,该项目由UI和WCF服务引用。 该UI需要INotifyPropertyChanged进行绑定 现在WCF必须使用相同的对象,但是我得到一个编译器错误 “类型 'System.ComponentModel.INotifyPropertyChanged' 在未定义的程序集中定义 参考。” 编辑:错误在WCF服务中 我想要一个对象类,如何解决这个问题 谢谢 -Oliver您

我正在编写一个大型Silverlight应用程序。 我目前正在编写数据检索元素

我现在遇到了问题

我有一个包含对象的公共项目,该项目由UI和WCF服务引用。 该UI需要INotifyPropertyChanged进行绑定

现在WCF必须使用相同的对象,但是我得到一个编译器错误

“类型 'System.ComponentModel.INotifyPropertyChanged' 在未定义的程序集中定义 参考。”

编辑:错误在WCF服务中

我想要一个对象类,如何解决这个问题

谢谢
-Oliver

您是否在编译项目中添加了对System.ComponentModel的引用

如果您计划为clr和silverlight项目的实体(域)使用相同的源代码,您将需要使用2个项目,因为silverlight程序集与clr程序集不同

将Silverlight类库项目添加到解决方案中,名称并不重要,但我通常只使用XXXX_SL

现在,您将“添加现有项”clr项目中的所有源文件,但请注意“打开”或“选择”按钮上的下拉列表?单击该链接,然后单击“添加为链接”或它在那里显示的任何内容

您现在对这两个项目使用相同的源代码,您的解决方案将被编译

在这个过程中可能会有一些小的调整,但这会让你走上正确的道路

我发现了一种方法,允许在服务端创建CLR类,然后可以使用服务引用中生成的对象,因为这些类是使用INotifyPropertyChanged和ObservableCollection生成的

这解决了客户机/服务器边界的直接问题,但符合我的解决方案,因为为了使用生成的对象,您需要服务引用。但是我有一个ProxyClass,它负责与WCF进行对话,因此我看不到将这些对象类型传递回ViewModel的方法

我看到一些人编写了映射器类,但这远远不够理想,因为我必须为每个POCO对象编写3个类(客户机类、服务器DTO类、映射器)


还有什么建议吗?

对不起,我忘了提及编译WCF服务时发生的错误。先编辑post@Oliver:well System.ComponentModel.INotifyPropertyChanged存在于系统(mscorlib.dll)中,因此。。。如果没有对系统的引用,您应该添加它。这会很奇怪,但可能会发生。我使用语句添加了System.ComponentModel,但问题仍然存在。这就是我发布的原因,因为它看起来不正确,我想知道我是否遗漏了什么。该服务具有System.ComponentModel using语句,该类允许我查看INotifyPropertyChanged接口,但我仍然无法编译:“System.ComponentModel.INotifyPropertyChanged”是在未引用的程序集中定义的。您必须添加对程序集的引用“系统,版本=2.0.5.0,区域性=中性,PublicKeyToken=7cec85d7bea7798e”添加对WindowsBase.dll的引用-c:\Program Files\reference Assemblys\Microsoft\Framework\v3.0\WindowsBase.dll当灯泡亮起时。我已经有一段时间没有处理这个问题了。看看我的答案。您应该将问题的标题改为“WCF和Silverlight项目之间的问题共享域模型”Noone已经回答了我的问题,那么我如何标记答案…@Oliver。。嗯。。。对您的问题已得到回答。;-)2月17日17:00。单击链接并查找“链接Silverlight程序集中的文件”。我并没有感到压力,但我还没有完全做到这一点,正如我在您的答案中的最新评论所示。我确实觉得我们越来越近了。谢谢你的帮助。