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

时间:2010-02-17 08:33:10

标签: c# wcf silverlight-3.0

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

我现在已经开始思考和发布了。

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

现在WCF必须使用相同的对象,但我收到编译错误

  

“类型   'System.ComponentModel.INotifyPropertyChanged'   在一个不是的程序集中定义   引用“。

编辑:错误发生在WCF服务中。

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

diagram http://www.pcbuyersguide.co.za/picture.php?albumid=19&pictureid=1708

由于 -Oliver

3 个答案:

答案 0 :(得分:3)

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

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

现在,您将从clr项目中“添加现有项目”所有源文件,但请注意打开或选择按钮上的下拉列表?点击它并“添加为链接”或其中所说的任何内容。

您现在正在为两个项目使用相同的源,您的解决方案将进行编译。

沿途可能会有一些小的调整,但这会让你走上正确的道路..

<强> Here is some reference material

答案 1 :(得分:0)

您是否在编译项目中向System.ComponentModel

添加了一个引用

答案 2 :(得分:0)

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

这解决了客户端/服务器边界的直接问题,但确实适合我的解决方案,因为为了使用生成的对象,您需要服务引用。但我有一个与WCF交谈的ProxyClass,所以在那里我看不到将这些对象类型传递回ViewModel的方法。

我看到有些人编写了mapper类,但这远非理想,因为我必须为每个POCO对象(客户端类,服务器DTO类,映射器)编写3个类。

还有其他建议吗?