IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Question sur niveau d'acces en C#


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 24
    Points
    24
    Par défaut Question sur niveau d'acces en C#
    Bonjour,

    Actuellement, je développe une bibliothèque (par visual studio 2005 et en C#) qui va être utilisée par quelques autres applications. Dans la bibliothèque j'ai creé des repertoires contenant des classes differentes: Par exemple A,B.
    Dans repertoire A, j'ai une classe "Money" qui a une attribute "Value". Pour que les classes dans B puissent accéder à cette attribute, j'ai mis "public" comme niveau d'acces pour cette attribute.
    Mais je ne veux pas que autres applications (qui von utiliser la bibliothèque ) puissent accéder à l'attribute "Value". Quesque je dois faire maintenant ?
    Je ne peux pas changer de "public" vers "protected" parce que comme ca les classes B ne pourront plus accéder à l'attribute "Value."

    Merci en avance.

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    regarde le mot clé "internal", il pourrait répondre à ton problème
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    internal = accessible seulement par le module (dll ou exe ou se trouve le code)
    il est meme possible de mettre internal protected, donc accessible pour le module et les héritiers extérieurs

    (à noter que par reflection il reste possible d'accéder à tout, même ce qui est privé)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    internal est effectivement la solution.

    Tu peux aussi permettre à un autre assembly spécifique d'accéder aux membres internal, avec l'attribut InternalsVisibleTo

    Citation Envoyé par Pol63 Voir le message
    (à noter que par reflection il reste possible d'accéder à tout, même ce qui est privé)
    Oui, mais seulement si l'application s'exécute en Full Trust. Sinon la réflexion sur des membres non publics ne fonctionne pas...

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et j'ajouterais que le terme exacte n'est pas niveau d'accès mais portée d'un membre


    Citation Envoyé par tomlev Voir le message
    Oui, mais seulement si l'application s'exécute en Full Trust. Sinon la réflexion sur des membres non publics ne fonctionne pas...
    faut activer clikconce pour avoir du partialtrust, non ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    et j'ajouterais que le terme exacte n'est pas niveau d'accès mais portée d'un membre
    MSDN parle bien de "niveau d'accès"
    http://msdn.microsoft.com/fr-fr/library/wxh6fsc7.aspx
    La portée, c'est autre chose, c'est lié à l'endroit où une variable est déclarée. Par exemple, une variable locale déclarée dans une méthode A est hors de portée d'une méthode B.

    Citation Envoyé par Pol63 Voir le message
    faut activer clikconce pour avoir du partialtrust, non ?
    Pas nécessairement, il y a d'autres scénarios où une application fonctionne en partial trust (Silverlight par exemple). Mais effectivement une appli Windows s'exécute généralement en full trust...

    Après, je suis pas vraiment expert sur les aspects "sécurité" du framework, donc je dis peut-être des conneries

Discussions similaires

  1. Question sur les accés concurrents
    Par bannik dans le forum Autres
    Réponses: 1
    Dernier message: 08/02/2008, 17h41
  2. question sur l'accée a un machine de mon réseau
    Par inter_amine dans le forum Windows XP
    Réponses: 4
    Dernier message: 30/04/2007, 16h32
  3. Question sur accès fichier word depuis excel (VBA)
    Par jerome.grange dans le forum VBA Word
    Réponses: 6
    Dernier message: 22/09/2006, 17h34
  4. Réponses: 16
    Dernier message: 11/07/2006, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo