0

Silverlight と Windows Phone 7.5 を対象とする一連のライブラリがあります。ライブラリには、共通のインターフェイスを持ち、プラットフォームによって実装が異なるナビゲーション ソリューションがあります。(SL と WP7 のナビゲーションは非常に似ていますが、非常に小さな違いがあります。残念ながら、それらを避けることはできません)

INavigationModel インターフェイス + 両方の実装を含むポータブル クラス ライブラリを作成する場合、どのプラットフォームがポータブル クラス ライブラリを呼び出しているかを知る方法はありますか? この情報は、実行時にソリューションの正しい実装を選択するのに役立ちます。

乾杯

edit 代替ソリューションも歓迎します。ポータブルクラスライブラリに関する情報をつなぎ合わせて、それらが何ができるかを確認しようとしています

4

2 に答える 2

3

現実的には、それはうまくいかないかもしれません。実行している環境を確実に判断できたとしても (おそらく Environment.OperatingSystem を使用したある種のハック)、実装が複雑な場合は、定義された型の最小公分母に完全に固執できる可能性は低いです/方法など

移植可能なアセンブリの全体的なポイントは、真に共有されたビット (ユーティリティ メソッド、インターフェイスなど) を定義することです。おそらく、より良い解決策は、移植可能なアセンブリで共有機能を持つ基本クラス/インターフェイスを定義し、プラットフォーム固有のアセンブリで拡張することです。非移植ビットを実装します。

于 2012-08-23T22:25:22.320 に答える
1

あなたがやりたいことをするのに良い方法はありません。ポータブル ライブラリは、プラットフォーム固有のプロジェクトの必要性をなくすものではなく、プラットフォーム固有のプロジェクトがプラットフォームにとらわれない方法で対話するのを容易にするだけです。

INavigationService の具体的な実装はプラットフォーム固有のプロジェクト自体にあり、共通の抽象化は移植可能なプロジェクトにあることをお勧めします。次に、IoC コンテナーまたは ServiceLocator のようなフレームワークを使用してそれらを接続します (Autofac をお勧めします)。私はMSDNのために書いた記事で同様のことをしました(実際、私はナビゲーションサービスのためにこれを行いました): Create a Continuous Client Using Portable Class Libraries。ソースコードをダウンロードして、具体的な例を確認してください。

于 2012-09-12T21:29:00.597 に答える