【问题标题】:Problem sharing domain model between WCF and Silverlight ProjectWCF 和 Silverlight 项目之间共享域模型的问题
【发布时间】:2010-02-17 08:33:10
【问题描述】:

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

我现在已经遇到并发布了。

我有一个保存对象的通用项目,该项目被 UI 和 WCF 服务引用。 UI 需要 INotifyPropertyChanged 用于绑定目的。

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

"类型 'System.ComponentModel.INotifyPropertyChanged' 在不是 引用。”

编辑:错误在 WCF 服务中。

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

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

谢谢 -奥利弗

【问题讨论】:

  • 奥利弗,灯泡亮了。我有一段时间没有处理这个问题了。看我的回答。您应该将问题的标题更改为“WCF 和 Silverlight 项目之间共享域模型的问题”
  • 没有人回答我的问题,所以我该如何标记答案......
  • @Oliver.. 嗯...是的。你的问题已经回答了。 ;-) 2 月 17 日 17:00。单击链接并查找“在 Silverlight 程序集中链接文件”。
  • 我并没有真正受到压力,但我还没有完全做到这一点,正如您在我的最新评论中看到的那样。我确实觉得我们越来越近了。感谢您的帮助。

标签: c# wcf silverlight-3.0


【解决方案1】:

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

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

现在,您将“添加现有项目”来自 clr 项目的所有源文件,但注意到打开或选择按钮上的下拉菜单了吗?单击它并“添加为链接”或其中所说的任何内容。

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

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

Here is some reference material

【讨论】:

  • 对不起,我忘了说编译 WCF 服务时会发生错误。编辑了第一篇文章
  • @Oliver: System.ComponentModel.INotifyPropertyChanged 存在于 System (mscorlib.dll) 中,所以...如果没有对 System 的引用,您应该添加它。这很奇怪,但可能会发生。
  • 我已经添加了 System.ComponentModel using 语句,问题仍然存在。这就是我发布的原因,因为它看起来不正确,我想知道我是否遗漏了什么。
  • 该服务有 System.ComponentModel using 语句,该类允许我看到 INotifyPropertyChanged 接口但我仍然无法编译:“System.ComponentModel.INotifyPropertyChanged”是在未引用的程序集中定义的。您必须添加对程序集的引用 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'
  • 添加对 WindowsBase.dll 的引用 - c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    还有什么建议吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多