我正在编写一个大型Silverlight应用程序。 我目前正在编写数据检索元素。
我现在已经开始思考和发布了。
我有一个包含对象的公共项目,该项目由UI和WCF服务引用。 UI需要使用INotifyPropertyChanged进行绑定。
现在WCF必须使用相同的对象,但我收到编译错误
“类型 'System.ComponentModel.INotifyPropertyChanged' 在一个不是的程序集中定义 引用“。
编辑:错误发生在WCF服务中。
我想要一个对象类,如何解决这个问题?
diagram http://www.pcbuyersguide.co.za/picture.php?albumid=19&pictureid=1708
由于 -Oliver
答案 0 :(得分:3)
如果您计划为clr和silverlight项目使用相同的实体(域)源代码,则需要使用2个项目,因为Silverlight程序集与CLR程序集不同。
将Silverlight类库项目添加到您的解决方案中,名称并不重要,但我通常只使用XXXX_SL。
现在,您将从clr项目中“添加现有项目”所有源文件,但请注意打开或选择按钮上的下拉列表?点击它并“添加为链接”或其中所说的任何内容。
您现在正在为两个项目使用相同的源,您的解决方案将进行编译。
沿途可能会有一些小的调整,但这会让你走上正确的道路..
答案 1 :(得分:0)
您是否在编译项目中向System.ComponentModel
添加了一个引用答案 2 :(得分:0)
我找到了一个方法here,允许用户在服务端创建CLR类,然后可以使用服务引用中生成的对象,因为这些类是使用INotifyPropertyChanged和ObservableCollection生成的。
这解决了客户端/服务器边界的直接问题,但确实适合我的解决方案,因为为了使用生成的对象,您需要服务引用。但我有一个与WCF交谈的ProxyClass,所以在那里我看不到将这些对象类型传递回ViewModel的方法。
我看到有些人编写了mapper类,但这远非理想,因为我必须为每个POCO对象(客户端类,服务器DTO类,映射器)编写3个类。
还有其他建议吗?