Question sur la visibilité des classes [Résolu]

Signaler
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008
-
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008
-
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.
A voir également:

8 réponses

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

Amicalement, SharpMao
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
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.
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008

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!
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
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.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
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
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
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
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008

Merci tout le monde!!