Modificateurs d'accès

De Banane Atomic
Version datée du 14 janvier 2022 à 16:19 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.

ProjectA\Properties\AssemblyInfo.cs
using System.Runtime.CompilerServices;

// set ProjectB as friend assembly
[assembly: InternalsVisibleTo("ProjectB")]
ProjectA\ClassA.cs
namespace ProjectA
{
    internal class ClassA {}
}
ProjectB\ClassB.cs
namespace ProjectB
{
    class ClassB
    {
        public ClassB()
        {
            // internal ClassA from assembly ProjectA is accessible from assembly ProjectB because ProjectA is a friend assembly of ProjectB
            var a = new ProjectA.ClassA();
        }
    }
}