2016-10-21 4 views
0

私はPCLを持っていて、たくさんの基本クラスを入れたいので、それぞれのプロジェクトでそれらを作り直す必要はありません。今私はFacebookでの追加を検討しています。私は外部DLLを参照する必要がありますので、私は自分のPCLをプロジェクトに使用したいのですが、それは少数の画面しかないプロジェクトであっても、 t。オプションで外部ライブラリを含めることはできますか?

それは問題ではないと言っている:私は毎回必要としないさらに多くの外部dllを追加する予定です。

どうすればこの問題を解決できますか?このDLLを自分のPCLに使用するコードを追加したいのですが、PCLを使用するたびにdllをインクルードする必要はありません。

答えて

1

ここで問題となるのは、コード内で外部ライブラリの型を使用したい場合、はライブラリを参照せずにできません。

この問題を回避するには、リフレクションを使用しますが、コードははるかに複雑になり、そうしないといいでしょう。

別の解決策は、にある:

  • あなたの "共通PCL" の各外部依存関係のためのインターフェイスを作成します(つまりFacebookのためのISocialMediaPlatformを。)。
  • 参照は、両方のあなたの「共通PCL」と外部ライブラリ、およびこれらのインタフェースの1(すなわち。FacebookSocialMediaPlatform : ISocialMediaPlatform)を実装するクラスを持っている
    • この実装はその後、参照できることを、それぞれの外部依存関係のための新しいPCLを作成します。外部依存関係および反射や依存性注入フレームワークを使用して直接
  • があなたの「一般的なPCL」に各インタフェースの実装を注入し、その型を使用

これは別の複雑なレイヤーを追加しますが、副作用として共通のPCLコードをテスト可能にします。

最後に私が個人的に好む解決策は、巨大な「共通のPCL」を全く持たず、1つの特定の役割を果たすいくつかの小さなものに分割することです。

+0

私の問題は、私が必要に応じて含める約20のライブラリがあり、将来的にはより多くのライブラリが必要になることです。これらのライブラリは、プラットフォームから呼び出される「設定」メソッドで一度参照する必要があり、通常は「アプリケーション」クラスの抽象クラスまたは仮想クラスのアプリキーまたはAPIキーを使用します。だから私はどのようにこれらのプラットフォームのそれぞれのための新しいPCLを作ることができ、右のAPIキーとそれらをペアリングすることはできません。私はリンクについて考えていましたが、必要に応じて注釈を追加しても、そうしなくてもリンカを使用するソリューションを追加できますか? – vrwim

+0

私は物事を小さく、シンプルに保つよう助言することができます。私は、維持不能なモンスターライブラリーとは思っていないものを作る手助けに努力したくありません。それは私の意見ですが、犯罪は意図されていません。 –

関連する問題