0

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

我有一个主对象,它具有许多属性,这些属性通常是List<MyTypeA>或者在某些情况下是MyListTypeB继承MyListTypeBList<MyTypeB>. 似乎是与MyListTypeB生成代理类似的类。这些都归因于<CollectionDataContract>并具有默认构造函数。

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

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

4

1 回答 1

0

我现在已经了解了 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>

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

于 2011-12-06T23:39:43.687 回答