1

.NET2.0との互換性を維持する必要があるクラスライブラリを公開しています。ただし、このクラスライブラリは、WCFベースのプロジェクトの内部でも使用したいと思います。

たとえば、expose-object-from-class-library-using-wcfを読み取ると、2.0クラスをマップするDataContractSurrogateオブジェクトを作成することにより、2.0クラスライブラリを使用するためのアプローチが提示されます。ただし、オブジェクト階層は豊富で深く、これは面倒で維持が困難です。

私たちはソースコードを管理しているので、もっと簡単なアプローチを探しています。

1つの考えは、ソースコードにDataConract属性を追加し、2.0ランタイムを対象にソリューションを構築する場合はDataContractAttributeの「空の」実装を提供し、3.0以降を対象にソリューションを構築する場合はSystem.Runtime.Serialization実装を使用することです。ランタイム。これは、ビルド間の参照を手動で微調整することで実現できます。

このアプローチを実装するためのより良い方法はありますか?

より良いアプローチはありますか?

4

2 に答える 2

1

別のアプローチとして、WCF属性(DataContractAttributeなど)を追加し、.NET3.0アセンブリを使用してビルドします。

.NET 2.0でアプリケーションを実行する場合、実行時に使用できないアセンブリの属性を使用しても、通常は問題は発生しません。

(実際に属性にアクセスしようとするとエラーが発生しますが、それを回避することはほとんど不可能です)。

于 2010-01-11T19:20:36.273 に答える
0

コード生成、またはVisualStudioで利用可能なT4テンプレートを使用して目標を達成できます。一方、T4でVisualStudioプロジェクトファイルを微調整できるかどうかはわかりません。他の考えられるマイナスは、プレーンなcsファイルよりもT4スクリプトの面倒なデバッグです。

于 2010-01-11T19:22:23.607 に答える