C# в котором нет friend... как правильно?
От: vitasR  
Дата: 26.09.10 07:44
Оценка:
Hi,

у нас тут возникла дискуссия по одному простенькому вопросу... хочу спросить мнение общественности как правильно сделать (интересует именно теоретически-идеологический аспект вопроса)

Есть класс такого вида:

public class MyClass {
private List<string> folderList;
// .... a lot of useful public methods here.....
}

все прекрасно — список фолдеров спрятан внутри, общение с внешним миром через публичные методы.

Но вот проблема. Есть GUI'ный класс Setup, через который юзер должен иметь возможность изменять список фолдеров, т.е. иметь к нему доступ.

Как идеологически правильно это можно сделать? по сути, имеет место ситуация, когда folderList должен быть приватным для всех, кроме как для класса Setup. В C++ это естесственным образом решается через friend class. а в C# ?

1. сделать folderList public ну или internal — собственно так и сделали, но как-то неправильно это по ощущениям.

2. сделать публичные методы для чтения/модификации folderList -- ну а чем это лучше чем п.1 ?

3. унаследовать Setup от MyClass не получится, т.к. Setup WPF'ный класс уже имеющий развесистый список предков,а множественное наследование C# опять же не признает. да и неправильно это

4. пока писал придумал извращенный вариант: сделать метод в классе Setup, с параметром List<string> folderList (возможно его инкапсулировать в спец.класс типа MyClassParameters); при необходимости настройки параметров вызывается нетод в классе MyClass, который дергает метод в Setup, отдавая ему ссылку на свой folderList, внутри Setup производится правка переданного списка. ура, искусственный friend сделан. Только по-моему слишком все сложно...

5. Ваш вариант?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.