【问题标题】:Generating Silverlight service reference - how to tell what is causing proxy classes to be generated生成 Silverlight 服务参考 - 如何判断导致生成代理类的原因
【发布时间】:2012-01-14 11:44:35
【问题描述】:

我想在 .Net4 后端和 Silverlight 5 前端之间共享一个大型对象结构。我创建了两个适当类型的类库项目,并在 .Net 库中实现了我的对象结构,并链接到 SL 库中。在 Silverlight 客户端,我引用的是 Silverlight 类库。当我生成服务引用时,我已选中“在引用的程序集中重用类型”选项。但是,当我生成服务引用时,我发现仍在生成引用程序集中的类型。它只是某些类型,并且似乎主要是集合类型(归属于<CollectionDataContract>)。

我有一个具有许多属性的主对象,这些属性通常要么是List<MyTypeA>,要么在某些情况下是MyListTypeB,其中MyListTypeB 继承自List<MyTypeB>。似乎是类似于MyListTypeB 的类导致生成代理。这些都带有<CollectionDataContract> 的属性,并具有默认构造函数。

我还发现,即使我添加服务引用的项目具有对包含实体的其他 SL project 的引用,但当我更新服务时,直接对 dll 的新引用也正在添加到项目中。我不确定为什么会发生这种情况,或者它是否会导致服务代理生成混乱

有什么方法可以判断是哪些类/属性导致服务生成生成代理类?或者它是一个反复试验的案例,必须注释掉属性,直到它们没有被生成并在问题类上磨练?

【问题讨论】:

  • 嗯。好的,我发现代理中生成的类实际上只是: System.Collections.ObjectModel.ObservableCollection 类型的类,并且通过使用带有 /ct 参数的 SLSvcUtil 生成代理可以防止生成这种类.但是在一个相当大的团队中工作,我不希望开发人员必须运行 slsvcutil。是否可以通过“添加服务引用”对话框实现此功能?

标签: silverlight wcf svcutil.exe service-reference


【解决方案1】:

我现在已经了解了 svcmap 文件的使用,并更新了 CollecitonMappings 元素以包含我的集合类型,如下所述:

http://mostlydevelopers.com/blog/post/2009/12/14/Configure-WCF-Service-ndash3b-Reuse-Collection-Types-Issue.aspx

svcmap 功能如此无证似乎有点不寻常。

我能够在 svcmap 文件中添加一个类似于以下内容的条目:

 <CollectionMappings>
  <CollectionMapping TypeName="MyNamespace.MyType" Category="List" />
 </CollectionMappings>

然后当我更新服务引用时,不会生成代理集合。

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 2010-11-15
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2013-09-13
    • 2012-10-14
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多