質問

ここに私が扱っている少し微妙な問題があり、どんな助けにも感謝します。

.NET 2.0で構築された生産モードでプロジェクトがあります。最近、2.0ソリューションの外部にSilverlightアプリケーションを開発し、WCFサービスを使用して「話す」ことができました。このサービスは、元のソリューションから機能にアクセスするために、2.0ソリューションパブリッシュフォルダーからコピーするDLLを消費します。

WCFサービスは、2.0ソリューションに由来するいくつかの方法とオブジェクトを公開しています。明らかに、それは[DataContract] sと[datamember] sを内部的に使用しますが、それらは元のソリューションでは利用できません(.NET 2.0であり、この時点で3.5にアップグレードすることはオプションではありません)。幸いなことに、WCFはシリアル化可能なオブジェクトを契約として定義されているかのように扱うことができますが、奇妙な理由で、メンバー変数のみ(プライベートとして定義されていても)がシリアル化されています。設定可能で公開されているプロパティは、決してシリアル化されません。

露出する必要があるオブジェクトクラスには、[シリアル化可能な()]が定義されています。私は周りを見回してきましたが、これについての良い解決策 /説明を見つけることができませんでした。それはおそらく、.NET 3.0/3.5が私の2.0オブジェクトを「見る」方法に関係しています(それは変数でのみ[Datamember]を想定し、プロパティでは決して想定していません)。

私の質問は、主に公共の財産のみを公開する方法であり、決して私的な変数ではありませんか?

これについての洞察を前もってありがとう。

itamar。

役に立ちましたか?

解決

この理由は不明のままです。この問題は、露出したオブジェクト(WCFプロジェクトを通じて使用しているコンパイルされたDLLに住んでいる)から派生し、必要なプロパティとヘルパー機能を再作成することで迂回しています。また、必要に応じて新しいプロパティまたはメンバー変数を追加します。次に、その新しいオブジェクトを内部的に使用します(これには、いくつかのコピーまたは調整を行うために専門のコンストラクターが必要な場合があります)。理想的ではありませんが、機能しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top