« Modificateurs d'accès » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 31 : | Ligne 31 : | ||
// set ProjectB as friend assembly | // set ProjectB as friend assembly | ||
[assembly: InternalsVisibleTo("ProjectB")] | [assembly: InternalsVisibleTo("ProjectB")] | ||
</filebox> | |||
<filebox fn='ProjectA\ClassA.cs'> | <filebox fn='ProjectA\ClassA.cs'> |
Dernière version du 14 janvier 2022 à 16:19
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(); } } } |