« Modificateurs d'accès » : différence entre les versions
Apparence
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();
}
}
}
|