为了简洁起见,本文涉及Silverlight Page.XAML.CS文件中的模糊引用,其文件包含对WCF服务的服务引用和添加为“链接”的MyClass.cs文件。该解决方案包含Silverlight项目和一个Web项目,其中包含WCF服务和MyClass.cs文件(以及aspx文件等)。
由于某种原因,一旦我将服务引用添加到Page.xaml.cs,我就会得到模糊的引用错误。在为服务引用添加using语句之前,我有一个用于MyClass.cs(它记得已经作为链接添加到SL项目中)到页面,它运行正常。一旦添加了SVC引用,编译器就会在我对MyClass.cs中的任何类/属性的调用中抱怨模糊,这样对MyClass.Class的引用就变得与'ServiceReference.MyClass.Class'不一致......看起来很奇怪我。
假设&澄清
我确保没有名称空间,类名,方法或变量具有相似的名称
WCF服务必须驻留在Web应用程序中才能访问其他非Silverlight程序集等
Silverlight项目中的其他.cs文件引用MyClass.cs,否则我只是删除了MyClass.cs的链接,并允许通过服务引用引用MyClass.cs。
我的假设是,这与添加文件作为链接有关?任何KungFu大师都能够提供一些关于为什么会发生这种情况的见解,作为链接文件添加的替代方案,其他想法?
答案 0 :(得分:2)
MyClass是否为您添加了服务引用的服务使用的类?如果为true,那么MyClass.cs中每个类有两个版本:一个来自MyClass.cs,另一个来自服务引用。
您应该选择其中一种 - 使用该服务或不使用该服务。
答案 1 :(得分:2)
如果您在Silverlight和Web项目中添加了“MyClass.cs”作为链接,那么它很可能会导致名称冲突,幸运的是它们应该处于单独的命名空间中。链接的类将位于原始命名空间中,而服务引用生成的类将位于生成的命名空间中。
生成服务引用时,可以使用“在引用的程序集中重用类型”选项,以便生成的服务代理使用链接的类而不是生成新的类。然而,有一些技巧可以让它正常工作,我在几个月前的帖子中概述了这些Resuing types in Silverlight Service References。
我希望这会有所帮助。
答案 2 :(得分:0)
Nigel Sampsons回答让我朝着正确的方向前进,感谢百万!
解决方案 为类文件创建一个新项目,并在Silverlight项目中添加对该项目的引用。然后,当您使用服务引用并选择“在引用的程序集中重用类型”时,它将不会生成它自己的类实现,从而消除了模糊的引用。
与典型的客户端/服务器服务方案不同,必须为Siverlight和ASP.NET单独编译类文件。
答案 3 :(得分:0)
我已经能够通过简单地取消检查重新检查来克服这个问题 "在引用的程序集中重用类型"当我配置服务引用时。我在类库和服务引用之间得到了模糊的引用,这导致我所谓的一系列错误,随着我所做的每一个动作而增长。