7

ポータブル クラス ライブラリに関する疑問についてお聞きしたいと思います。私は DAL レイヤーを開発しており、ビジネス オブジェクトにポータブル プロジェクトを使用しています。このプロジェクトは、.Net Framework 4.03 以降、SilverLight 4および Windows ストア アプリ用の .Net をターゲットとしています。

IValidatableObject各ビジネス オブジェクトにインターフェイスを実装したいのSystem.ComponentModel.DataAnnotationsですが、このプロジェクトが対象とするフレームワークで使用できる場合でも、IValidatableObjectインターフェイスにアクセスできず、.net ポータブル フレームワークで使用できず、どちらのMetadataType属性も存在しません。 . このアプローチを達成するための解決策はありますか?

4

2 に答える 2

6

これにはおそらく簡単な解決策はありません。同じ機能を持つポータブル クラス ライブラリで独自のインターフェイスを作成できます。ただし、それは別のインターフェイスになるため、DataAnnotations を使用する他のフレームワーク (ASP.NET MVC および Entity Framework だと思います) は、あなたのバージョンを使用しません。

この問題を回避するには、異なるプラットフォームに存在するものとまったく同じ名前と API を持つインターフェイスを使用して PCL を作成できます。次に、.NET 4.0.3、SL4、および Windows ストア用のクラス ライブラリをまったく同じアセンブリ ID (名前、バージョン、および厳密な名前のキー) で作成し、それらのアセンブリに[assembly:TypeForwardedToAttribute(typeof(IValidatableObject))]属性を配置します。

次に、PCL はインターフェイスを使用して PCL ライブラリを参照できます。PCL を使用するすべてのアプリで、そのプラットフォームの型転送アセンブリを参照します。これにより、インターフェイスの PCL バージョンへの参照が、プラットホーム。

于 2013-04-16T20:40:13.833 に答える
1

ダニエルが説明したソリューションの詳細な説明は次のとおりです。http://log.paulbetts.org/the-bait-and-switch-pcl-trick/

于 2014-11-11T20:51:23.980 に答える