WSA、NET45、およびWP8を対象とするポータブルクラスライブラリがあり、SL5も対象にしたいと思います。ばかげているのは、ライブラリコードの99%がSL準拠であるということですが、リフレクションAPIを呼び出して型のプロパティまたはフィールドを取得する場所がいくつかあります。
var fields = myType.GetTypeInfo().DeclaredFields;
残念ながら、GetTypeInfoはSL5で使用できないため、上記のコードはコンパイルされません。だから私は基本的にそこにオプションがあります:
- PCLからSL5をターゲットにしないでください。そのため、Silverlight用に別のライブラリを保持する必要があります。
- リフレクションを使用するPCLコードから抽出するため、PCLは開始時にこの依存関係を解決する必要があります。
- PCLが使用可能なメソッドを検出し、適切なメソッドを呼び出すことができるように、実行時にスマートなことを実行します。
オプション1は問題ありませんが、重複したライブラリを維持する代わりの方法を見つけたいと思います。オプション2は、機能の大部分を抽出する必要がある場合は問題ないため、ブートストラッパーを導入する価値があります。コンパイルされない数行の場合、DI/IoCをドラッグするのはばかげています。
ですから、可能かどうかを明確に理解せずに、オプション3について考えています。リフレクションは私の友達ですが、私が克服しようとしているのはリフレクションAPIの不一致です。
アドバイス/経験の共有は大歓迎です。