質問
個別のプロジェクト/アセンブリを使用せずに、あるカスタム タイプを別のカスタム タイプから非表示にするメカニズムが .NET Framework にありますか? Type のメンバーを別の型から非表示にするためのアクセス修飾子について話しているのではなく、Type 自体を非表示にすることを意味します。
バックグラウンド
私は ASP.NET Web サイト プロジェクトで作業していますが、チームはソフトウェア レイヤーごとに個別のプロジェクト アセンブリを使用しないことにしました。したがって、たとえば、クラスが同じ ASP.NET Web サイトプロジェクト内の他のタイプにアクセスできないようにする DataAccess/ フォルダーを作成する方法を探しています。言い換えれば、レイヤーを偽造し、各レイヤーの周りに何らかのセキュリティメカニズムを用意して、別のレイヤーにアクセスできないようにしたいと考えています。
詳細情報と詳細 ...
言語固有の OO キーワードを使用してこの制限を強制する方法がないことは明らかなので、別のものを探しています。ある名前空間が別の名前空間にアクセスするのを制限するものでさえ。それが最終的な形になるかどうかはわかりません。
これが C++の場合friend
、解決策として make を使用する可能性が高く、この場合は C#internal
に変換されませんが、よく比較されます。
ソリューションが実際にタイプを互いに隠しているのか、単にアクセスできないようにするのかはあまり気にしません。ただし、1 つのタイプを他のすべてのタイプからロックダウンしたくありません。これは、アクセス修飾子が解決策ではないもう 1 つの理由です。実行時または設計時の回答で十分です。それ以外の場合は、努力する価値がない実装が簡単なものを探しています...