Question sur la visibilité des classes

Résolu
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 24 juin 2005 à 16:02
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 24 juin 2005 à 17:15
Bonjour,

Je suis en train de développer quelques classes pour un projet perso.



J'ai dans un même Namespace une dizaine de classes (toutes publiques).
Mais j'ai une classe "Tools" qui contient quelques méthodes de classe
qui m'aident dans la réalisation des autres classes de ce namespace
mais qui sont inutiles pour la personne qui va se servir mes classes.



Je voulais savoir s'il est possible de rendre cette classe "Tools" uniquement visible par les classes de ce namespace.



Par exemple si Class1 se trouve dans ce namespace, lors de l'écriture d'une méthode de cette classe, je peux faire :

Tools.meth01()



Mais si quelqu'un se sert de mes classes en ayant fait :

using myClasses;



il ne puisse pas se servir de la classe "Tools".



Merci d'avance.

8 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
24 juin 2005 à 16:06
Il suffit de mettre internal à la place de public pour la visibilité.

Amicalement, SharpMao
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
24 juin 2005 à 16:16
T'es trop rapide SharpMao : )

Vi, l'attribut internal limite la visibilite à l'assembly en cours, c'est a dire que si tu compiles ton code en DLL ta classe Tool ne pourra pas etre utilisée, par contre si ton code est compilé dans le meme EXE que le client alors là ta classe est utilisable.
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
24 juin 2005 à 16:31
merci beaucoup, j'ai une autre petite question dans la foulée :



J'utilise le mot clef public devant mes classes par exemple :

public class Machin

{

[...]

}



Qu'est ce que cela fait si je le change par private ou protected?



Parce qu'avec les variables d'instance, je sais très bien :

public : l'utilisateur, la classe en cours et les classes héritées la voit

protected : la classe en cours et les classes héritées la voit

private : seul la classe en cours la voit



Mais appliquer ça sur les classes, je trouve ça bizarre, à part public qui a un sens pour moi!
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
24 juin 2005 à 16:40
On peut mettre une ou plusieures classes dans une classe :

public class Class1
{
private class Class2
{
...
}

//Reste de Class1, qui peut utiliser Class2
}

Avec ceci, Class2 peut être utilisée par Class1, mais par aucune autre classe.

Amicalement, SharpMao
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
24 juin 2005 à 16:49
Vraiment trop rapide ce chat..

Je précise que seule les classes internes peuvent avoir l'attribut private ou protected, pas la classe la plus à l'exterieur, pour celle ci ne rien mettre revient à mettre internal.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
24 juin 2005 à 16:58
En efet Lutinore,

internal est la visiblilté par défaut d'une classe la plus à l'extérieure, ce qui signifie qu'on peut omettre de mettre le mot clé internal.

Amicalement, SharpMao
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
24 juin 2005 à 16:59
Si jamais, pour plus de renseignements dur la visibilité :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfdeclaredaccessibilitypg.asp

Amicalement, SharpMao
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
24 juin 2005 à 17:15
Merci tout le monde!!
0
Rejoignez-nous