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

Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention - 24 juin 2005 à 16:02 - Dernière réponse : Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention
- 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.
Afficher la suite 

8 réponses

Répondre au sujet
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 24 juin 2005 à 16:06
+3
Utile
Il suffit de mettre internal à la place de public pour la visibilité.

Amicalement, SharpMao
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 24 juin 2005 à 16:16
0
Utile
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.
Commenter la réponse de Lutinore
Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention - 24 juin 2005 à 16:31
0
Utile
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!
Commenter la réponse de Chris_LaFouine
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 24 juin 2005 à 16:40
0
Utile
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
Commenter la réponse de SharpMao
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 24 juin 2005 à 16:49
0
Utile
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.
Commenter la réponse de Lutinore
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 24 juin 2005 à 16:58
0
Utile
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
Commenter la réponse de SharpMao
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 24 juin 2005 à 16:59
0
Utile
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
Commenter la réponse de SharpMao
Chris_LaFouine 109 Messages postés mardi 13 avril 2004Date d'inscription 4 juin 2008 Dernière intervention - 24 juin 2005 à 17:15
0
Utile
Merci tout le monde!!
Commenter la réponse de Chris_LaFouine

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.