0

.Net4 バックエンドと Silverlight 5 フロント エンドの間で共有したい大きなオブジェクト構造があります。適切なタイプの 2 つのクラス ライブラリ プロジェクトを作成し、オブジェクト構造を .Net ライブラリに実装して、SL ライブラリにリンクしました。Silverlight クライアント側では、Silverlight クラス ライブラリを参照しています。サービス参照を生成するときに、「参照されたアセンブリで型を再利用する」オプションをオンにしました。ただし、サービス参照を生成すると、参照されたアセンブリにある型がまだ生成されていることがわかります。それは特定のタイプのみであり、大部分はコレクション タイプのようです (属性は に帰属します<CollectionDataContract>)。

私は多くのプロパティを持つメイン オブジェクトを持っています。これらのプロパティは一般的に であるかList<MyTypeA>、場合によってはMyListTypeBであり、MyListTypeBから継承されList<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 に答える