0

wcf ria サービスを使用してサーバーに接続する Silverlight 4 プロジェクトがあります。クライアント (silverlight) とサーバーの両方で使用する必要があるパブリック クラスがあります。これを達成するための最良の方法は何ですか?

サーバー上で .shared.cs ファイル規則とリンクされたファイルを使用してみました (元のファイルはサーバー上にあります)。クライアントは重複したクラスがあると考えたので、それを部分クラスに変更しました (変更したくない)。次に、プロパティの重複について不平を言ったので、このスタックオーバーフローの質問に対する解決策を試しました。このソリューションを使用して遭遇した問題は、サーバー上の元のクラスにある列挙にアクセスできないことです。

また、他のプロジェクト (silverlight クライアントとサーバー) の両方が参照できるクラス ライブラリ プロジェクトの作成も試みました。問題は、両方のプロジェクトが参照できる、作成するプロジェクトのタイプを見つけることです。Silverlight は、Silverlight 以外のプロジェクトについて不平を言い、その逆も同様です。

4

3 に答える 3

0

問題がどこから来たのかはわかりませんが (列挙にアクセスできないとはどういう意味ですか?)、基本的な型を共有することを目的としたアセンブリ共有と呼ばれる機能が .NET でサポートされていることを知っておくと役立つ場合があります。 Silverlight と .net の間で。Silverlight プロジェクトではなく、Silverlight アセンブリを参照する必要があることに注意してください。これによりコンパイル順序が崩れる場合は、次のように「偽の」プロジェクト参照も csproj ファイルに追加します。

<ProjectReference Include="..\MySilverlightSharedProject.csproj">
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>

ここに文書化されているように

于 2012-04-13T09:51:04.443 に答える
0

Portable Library Extension ツールの使用を検討しましたか。

ここから引用すると、Portable Class Library プロジェクトを使用すると、複数の .NET Framework プラットフォームで動作するマネージ アセンブリを記述およびビルドできます。

于 2012-04-13T19:35:07.173 に答える
0

ここでの最善の解決策は、ソリューションで新しいプロジェクトを作成し (ヘルパー、コモンなどと呼ぶことができます)、クライアント プロジェクトとサーバー プロジェクトの両方に参照を追加することだと思います。そうすれば、両方で同じクラスを使用でき、クラスの構造を変更すると両方のプロジェクトに影響します。

于 2012-04-13T00:45:12.930 に答える