Simuler des classes friend en C#
Je me suis déjà déjà posé la question suivante : comment faire pour qu'une certaine classe (B) puisse accéder à des membres d'une autre classe (A) sans que les classes dérivées de A, ni les classes qui ne disposent pas d'instance de B ne puissent y accéder. En C++ on peut utiliser l'attribut friend, mais en C# il fait trouver un subterfuge.
En fait il est possible de faire ça avec des Nested Classes (des classes déclarées à l'intérieur d'autres classes) :
public class A
{
private int nb;
public A(int nb)
{
this.nb = nb;
}
public class B
{
public void Print(A a)
{
Console.WriteLine(a.nb.ToString());
}
}
}
public class C
{
public void Do(A.B b)
{
A a = new A(5);
b.Print(a);
}
}
Les classes dérivées de A ne pourront pas accéder à nb (qui est privé), alors que B pourra, puisqu'il est inclu dans A. Par contre je n'ai pas trouvé de moyen simple pour que B puisse accéder aux données privées de plusieurs classes (il faudrait que B soit incluse dans plusieurs classes à la fois ce qui est impossible)... si quelqu'un a une idée ?
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :