2011-12-06 14 views
0

我有一個大的對象結構,我想在.Net4後端和Silverlight 5前端之間共享。我創建了兩個適當類型的類庫項目,並在.Net庫中實現了我的對象結構,並鏈接到SL庫中。在Silverlight客戶端,我引用了Silverlight類庫。當我生成服務引用時,我檢查了「在引用程序集中重用類型」選項。但是,當我生成服務引用時,我發現引用程序集中的類型仍在生成。它只是某些類型,似乎主要是集合類型(歸因於<CollectionDataContract>)。生成Silverlight服務參考 - 如何判斷是什麼導致生成代理類

我有一個具有許多特性,這通常是從List<MyTypeB>List<MyTypeA>或在某些情況下它們是MyListTypeB,其中MyListTypeB繼承一個主要目的。它似乎是類似MyListTypeB,導致代理生成的類。這些全部歸因於<CollectionDataContract>並且具有默認的構造函數。

我還發現,即使項目在那裏我加入服務引用到了其他SL 項目包含實體引用,當我更新的服務也被直接添加一個新的參考DLL到項目。我不確定爲什麼會發生這種情況,或者它在服務代理生成中造成混亂

有什麼方法可以告訴哪些類/屬性導致服務生成生成代理類?或者它是一個試驗和錯誤的情況下,不得不註釋屬性,直到它們沒有生成並磨練問題類?

+0

嗯。好的,我發現,在代理正在生成的類是實際上只是: System.Collections.ObjectModel.ObservableCollection 型類,以及通過產生使用SLSvcUtil與/ CT參數的代理防止這種正在生成。然而,在一個相當大的團隊工作,我不希望開發人員必須運行slsvcutil。通過「添加服務引用」對話框可以實現此功能嗎? – hitch

回答

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> 

,然後當我更新了代理的集合都不會產生服務引用。