J'ai posé cette question à plusieurs personnes et jusqu'à présent, je n'ai pas de réponse.C# classe/namespace Accès
ASP.NET C#
arborescence du projet (fichiers et dossiers):
> (ROOT)
>
> Class MyAccess (namespace myproject.core)
>
> (Directory John)
------> Class MyJohn (namespace myproject.core.John)
------> Class JohnSecret (namespace myproject.core.John)
------> Class OtherJohnSecret (namespace myproject.core.John)
>
> (Directory Paul)
------> Class MyPaul (namespace myproject.core.Paul)
------> Class PaulSecret (namespace myproject.core.Paul)
Comment puis-je utiliser (public, privé, protégé, interne) ????? d'avoir ce comportement qui:
- MyJohn de classe voit et peut créer des objets à partir de toutes les classes dans le dossier John (tous ses secrets)
- MyPaul de classe ont le même comportement, mais l'intérieur du dossier Paul
- Tous ces secrets NE PEUT PAS être utilisé en dehors de ce dossier.
Exemples:
- MyPaul peut utiliser tous ses secrets, et il peut communiquer avec les classes MyAccess et MyJohn.
- MyPaul, MyJohn, MyAccess seront publics ou internes
- MyAccess ne peut pas utiliser PaulSecret.
Solutions que je n'aime pas:
- Solution BAD 1
Faire secrets John comme protégés et le patrimoine d'une MyJohn
Exemple:
> protected JohnSecret
> internal MyJohn:JohnSecret
mauvais parce que si j'ai 100 secrets de classe je besoin d'avoir quelque chose comme:
> internal MyJohn:JohnSecret1, JohnSecret2,....,JohnSecret100
- Solution BAD 2
ont des classes à l'intérieur des classes:
> internal class MyJohn {
>
> internal string DoSomething(){}
>
> private class JohnSecret{}
> private class JohnSecret2{}
> private class JohnSecret3{}
>
> }
Ce n'est pas bon parce que, encore une fois, si j'ai 100 secrets je vais avoir un énorme fichier, je ne peux pas partager ce code dans différents fichiers de code source.
Quelqu'un peut-il donner une bonne solution?
J'apprécie :)
Merci beaucoup.
Pourquoi avez-vous besoin de tant de classes secrètes? – Jared314
Si vous avez des situations si complexes avec des modificateurs d'accès, je suppose qu'il doit y avoir quelque chose d'autre qui ne va pas dans votre situation. – Juri
Cette question est venue quand nous avons du code qui sera développé par une équipe (plusieurs personnes codant -> contrôle CVS) et parfois avec IntelliSense de Visual Studio nous pouvons accéder à une classe (dans un autre répertoire de code) qui ne devrait pas être utilisée directement . C'est pourquoi j'ai demandé comment pouvons-nous éviter cela. – Dryadwoods