2016-04-26 3 views
1

私のC#プログラムのプラットフォームに依存しないロジックを共有プロジェクトに分割したいと考えています。今ではプラットフォーム固有のプロジェクトからリポジトリ、サービスクラスなどを隠したいと思っています。どのようなアクセス修飾子を使用できますか? internalは、同じ実行可能ファイルにコンパイルされているので、うまく動作していないようです(私は思う)。私はすべてのクラスにInternalsVisibleToAttributeというタグを付けることを望んでいません。クラスは共有プロジェクトにのみ表示されますか?

共有プロジェクトのクラスを自分のプラットフォーム固有のコードに見えないようにする方法はありますか?

答えて

0

いいえ、C#にはこのような機能はありません。 InternalsVisibleToAttributeの他のすべてのプロジェクトにオプションを付けることを検討すると、それはそのトリックを行います。

可能であれば、他のファイル(リポジトリ、サービスファイル)を共有プロジェクトに含まれていない別のアセンブリに分割することができます。

1

タイプのプラットフォームプロバイダを知る必要がある場所は1つだけです。他のすべての人は、プラットフォーム不変のインターフェースを使うべきです。

すべてのプラットフォーム固有の実装は、プライベートでも内部的でも構いません。プロバイダがアクセスできるようにする必要があります。アプリケーションは、プラットフォーム固有のプロバイダを使用して、プラットフォーム固有のインスタンスを取得します。ただし、プラットフォーム不変のインタフェースのみを使用します。

「1つの実行可能ファイルにコンパイルされている」ということは、それほど重要ではありません。ほとんどの場合、コンパイル時のチェックについて全面的に気をつけているでしょう。それは、最終実行可能ファイルがどのようにパッケージ化されているかに関係なく、まだ存在しています。部分的な信頼環境では、リフレクションにいくつかの制限がありますが、その時点では、ランタイムの安全性ではなく、コンパイルチェックのためだけに注意してください。

関連する問題