为简洁起见,本文涉及Silverlight文件中的不明确引用,该文件的项目包含对Page.XAML.CS服务的服务引用和作为“链接”添加的MyClass.cs文件。该解决方案包含Silverlight项目和一个Web项目,该项目包含一个WCF服务和一个MyClass.cs文件(以及aspx文件等)。
由于某些原因,一旦我将服务引用添加到Page.xaml.cs中,我就会收到不明确的引用错误。在为服务引用添加using语句之前,我有一个用于MyClass.cs的语句(记住,它是作为链接添加到SL项目中的)到页面,它运行得很好。一旦添加了SVC引用,编译器就会抱怨我调用'MyClass.cs中的任何类/属性时的歧义,以至于对MyClass.Class的引用对'ServiceReference.MyClass.Class...Seems‘变得不明确,对我来说非常陌生。
假设和澄清
我确保没有名称空间、类名、方法或变量具有类似的名称
WCF服务必须驻留在web应用程序中才能访问其他非Silverlight程序集等
Silverlight项目中的其他.cs文件引用MyClass.cs,否则我将简单地删除到MyClass.cs的链接,并允许通过服务引用引用MyClass.cs。
我的假设是,这与添加文件作为链接有关吗?有没有KungFu大师能够提供一些关于为什么会发生这种情况的见解,作为链接文件添加的替代方案,还有其他想法吗?
发布于 2009-07-30 02:41:17
MyClass是您为其添加了服务引用的服务使用的类吗?如果为true,则MyClass.cs中的每个类有两个版本:一个来自MyClass.cs,另一个来自服务引用。
你应该选择其中一个-要么使用服务,要么不使用服务。
发布于 2009-07-30 04:26:09
如果您在Silverlight和Web项目中都添加了"MyClass.cs“作为链接,那么很可能会导致名称冲突,幸运的是,它们应该位于不同的名称空间中。链接的类将位于原始命名空间中,而由服务引用生成的类将位于生成的命名空间中。
您可以在生成服务引用时使用"Reuse Types in Reference Assemblies“选项,以便生成的服务代理使用您的链接类,而不是生成新的类。然而,有几个技巧可以让它正确工作,我在几个月前的一篇文章Resuing types in Silverlight Service References中概述了这些技巧。
我希望这能帮到你。
发布于 2009-07-30 14:19:01
奈杰尔·桑普森的回答让我找到了正确的方向,非常感谢!
该解决方案为类文件创建一个新项目,并在您的Silverlight项目中添加对该项目的引用。然后,当您广告您的服务引用并选择“重用引用的程序集中的类型”时,它将不会生成它自己的类实现,从而消除了不明确的引用。
与典型的客户端/服务器服务场景不同,对于Siverlight和ASP.NET,类文件必须分别编译。
https://stackoverflow.com/questions/1203875
复制相似问题