у нас тут возникла дискуссия по одному простенькому вопросу... хочу спросить мнение общественности как правильно сделать (интересует именно теоретически-идеологический аспект вопроса)
Есть класс такого вида:
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 сделан. Только по-моему слишком все сложно...