Modificateurs d'accès

De Banane Atomic
Révision datée du 20 octobre 2017 à 15:12 par Nicolas (discussion | contributions) (→‎Friend assemblies)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Définitions

public Pas de restriction d'accès
protected Accès restreint à la classe contenante et aux classes qui en héritent
internal Accès restreint à l'assembly courante
protected internal Accès restreint à l'assembly courante OU aux classes qui héritent de la classe courante.
private Accès restreint à la classe contenante

Par défaut

internal class, struct et delegate définis dans un namespace
private membres de class, membres de struct, éléments imbriqués (class dans une class)

Friend assemblies

Une assembly déclarée comme friend peut accéder aux membres internal de l'assembly courante.
Utile pour les tests unitaires.

AssemblyA.ClasseA.cs
using System.Runtime.CompilerServices;

// déclaration d'AssemblyB comme assembly friend
[assembly: InternalsVisibleTo("AssemblyB")]

namespace AssemblyA
{
    class ClasseA {}  // internal par défaut
}
AssemblyB.ClasseB.cs
namespace AssemblyB
{
    class ClasseB
    {
        public ClasseB()
        {
            // accès possible à ClasseA qui est internal car AssemblyB est déclarée comme friend d'AssemblyA
            var a = new AssemblyA.ClasseA();
        }
    }
}