【问题标题】:Class Libraries, Silverlight and Webservices类库、Silverlight 和 Web 服务
【发布时间】:2010-08-27 13:02:57
【问题描述】:

我有一个 Silverlight 类库,我想在我的 Silverlight 和我的 WebService 项目中使用它。

我能够在两个项目中创建和引用库而没有任何问题,但是当我尝试在 Silerlight 项目中使用库中的任何类时,我的库和 Asmx Webservice 之间出现了不明确的引用错误(显然silverlight项目认为类库中的类存在于webservice中)。

我该如何解决这个问题?我尝试过重建和清洁,但似乎不起作用。有人可以帮忙吗?

【问题讨论】:

    标签: c# .net silverlight asmx


    【解决方案1】:

    听起来您通过 WCF 服务传递给 Silverlight 的对象与您的类库中的对象相同。在这种情况下,生成的 Web 引用对象将被赋予相同的名称。然后,与库链接将为您提供 2 组具有相同名称的对象。

    如果您安装 RIA 服务,一旦功能是在客户端和服务器之间共享代码的能力,只需在扩展名之前的类文件名中添加“.shared”。 ASMX 服务是上个世纪 :)

    如果您不想学习 RIA 服务跨 great-web-divide 共享对象的方式(我会推荐),您需要将数据对象与您的功能分开实际上是想共享客户端和服务器端。

    要就您当前的设置提供更具体的建议,我需要了解更多有关其结构的信息。

    【讨论】:

    • 我基本上是在没有webservices知识的情况下开始这个项目的,而ASMX恰好是我选择的,但它现在已经变得相当大了,所以我没有费心去改变它。就其结构化而言,我在库中有所有“数据类”,并且在我的 Web 服务类中有一个使用“ClassLibrary”,并引用了类库 DLL(我的所有 Web 调用都在这个班级)。此外,我的 Silverlight 项目中有类库引用以及使用“ClassLibrary”和“WebService”。当我尝试在 silverlight 中使用数据类时,我得到了模棱两可的错误。
    • 基本上这就是 RIA 服务旨在解决的情况类型。虽然将数十个(甚至 100 个)课程转移到 RIA 服务似乎令人生畏,但这并不像听起来那么痛苦,而且会让您的生活更轻松。我现在拥有成对项目的 RIA 服务库。您将一个链接到您的 SL 应用程序,另一个链接到网站。工作一种享受。对 RIA 进行一些快速研究,然后做出决定。使用单个传统库,我想不出一个简单的答案来解决您当前的情况。干杯
    【解决方案2】:

    您可以使用的一种技术是使用别名:

    using MyNameSpace = My.Name.Space;
    using MyWebService = My.Web.Service;
    

    然后使用这些别名访问所有对象以消除歧义。

    【讨论】:

    • 这可行,但我遇到了类型转换问题,这是我想避免的。
    • @gfeli - 您是否已将命名空间一直指定到根级别以使 Web 服务不会接管对象的命名空间?如果您的 Web 服务返回完整的命名空间对象,例如 My.Full.NameSpace.Type,那么应该不存在类型转换问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2010-11-18
    • 2010-11-06
    • 2011-08-27
    • 2010-09-26
    相关资源
    最近更新 更多