ワンライナーの質問は意味をなさないので、私に詳細に私の挑戦をすることはできません。メンバー。すべてのクラス、型およびメンバーは、それぞれのデフォルトの名前空間(アセンブリ名と同じ)です。C#ネームスペースを複数のアセンブリにまたがる方法それぞれが「内部」クラス、種類の独自のセットを含む、私は3つのDLLを作成している</p> <p>(<strong>MyUtils、MyConnector、myagentという</strong>):
MyAgentはMyConnectorへの参照を追加し、いくつかのクラスを使用する必要があります。 MyConnectorはMyUtilsへの参照を追加し、そのクラスのいくつかを使用する必要があります。 現在、MyAgentはMyUtilsのいくつかのタイプにアクセスする必要があります。
MyUtilsのすべてのタイプとメンバーが内部であるため、MyConnectorへの参照として、MyConnectorからMyAgentへの参照として追加できません。 DLLを使ってアプリケーションに直接アクセスしたくないので、これらの型をパブリックにする必要はありません。
理論的には、複数のアセンブリにわたって名前空間を張ることは可能ですが、上記のシナリオを実際にどのように実現するかは明確ではありません。
最後に、EXEで使用するMyAgent.dllだけを展開します。そのEXEはMyAgentのパブリック・タイプにのみアクセスできる必要がありますが、MyAgentメソッドからはMyConnectionオブジェクト(MyConnectorに含まれるタイプ)が返されます。ここでもまた、私のアクセス指定子(内部)がこの可能性を制限しています。
私は今、完全に混乱しています。経験豊富なプログラマーからの指導に感謝します。
ありがとうございます。アセンブリ1で
file1.cs:assembly2で
namespace MyNamespace { ... }
file2.cs:
namespace MyNamespace { ... }
しかし、このwon'を複数のアセンブリの上に名前空間が非常に簡単に行われるスパニング
これはあなたの問題に対する解決策ではありませんが、パブリックタイプのないユーティリティーアセンブリの価値については疑問です。ユーティリティータイプを内部のままにしたい理由について詳しく説明できますか? –
多分私はあまり明確ではありませんでした。最後のdll(MyAgent)にはパブリックタイプもあり、それらはexeが呼び出すものです。しかし、私の必要性は、実装の実装を含む他のすべてのアセンブリの実装の詳細を隠すことでした。それらを一般公開することで、intelliseseリストに不必要なノイズが加わるだけでなく、exe開発者が拒否すべきではないものを思いつくようにすることができます。 –
とにかく、どれくらい公開するべきかについて少し妥協しながら、私が望むものを達成する方法を見つけたと思います。だから、私はこの問題を解決したと考えています。私は新しい道路ブロックを打つことを尋ねます。御時間ありがとうございます。 –