Сейчас читаю паттерны ООП банды четырех и вижу, что для реализации некоторых паттернов используется механизм friend классов C++.
Возникает закономерный вопрос, а как быть в C#, когда необходимо дать выборочный доступ? Т.е. одним классам можно обращаться к закрытым полям, а всем остальным нельзя.
Пока что придумал только вариант с областью видимости.
class A
{
private Int32 n;
public class B
{
public void AccessN()
{
var a = new A();
a.n = 213;
}
}
}
Тут вложенный класс вроде как друг своего контейнера.
P.S. Для чего это надо — см. паттерн Хранитель (Memento).