2013-04-15 16 views
7

私はポータブルクラスライブラリに関する疑問について質問したいと思います。私はDALレイヤーを開発しています。私はビジネスオブジェクト用にPortableプロジェクトを使用しています。このプロジェクトは.Net Framework 4.03以降、SilverLight 4以上、.Net for Windows Store Appsの対象です。IValidatableObjectをポータブルクラスライブラリプロジェクトに実装する方法はありますか?

私は、ビジネス・オブジェクトのそれぞれにIValidatableObjectインターフェイスを実装したいのですが、System.ComponentModel.DataAnnotationsは、フレームワークのために利用可能である場合でも、このプロジェクトはを対象としている、私はIValidatableObjectインターフェイスへのアクセスをhaven't、.NETのポータブルでは利用できませんフレームワークでは、MetadataType属性は存在しません。このアプローチを達成するための解決策はありますか?

答えて

6

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

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

PCLはインターフェイスでPCLライブラリを参照できます.PCLを使用するすべてのアプリケーションで、そのプラットフォームのタイプ転送アセンブリを参照すると、インターフェイスのPCLバージョンへの参照がそのインターフェイスにリダイレクトされますそれはプラットフォームに入ってくる。

+0

どうもありがとう、それは素敵なソリューションです。 – user2275999

関連する問題