Я создаю класс, в котором будут размещаться результаты выборов. У меня есть класс результатов, который имеет статический метод, который будет анализировать файл и возвращать класс результатов с результатами из файла.
Я хочу убедиться, что только статический метод может изменять результаты, поэтому я использовал внутренний модификатор (Precinct.InternalCandidates) (препятствует доступу методов к экземплярам моего класса за пределами dll, верно? ).
В любом случае, мне нужно выставить кандидатов в виде списка только для чтения для экземпляра моего класса, в который был создан экземпляр, но, очевидно, мне нужно будет добавить кандидатов во время процесса заполнения. Итак, я создал еще один параметр в классе Precinct под названием Precinct.Candidates, который предоставляет версию InternalCandidates только для чтения
Вот как я могу представить, как это работает:
Results r = Results.ParseResultsFile("PathToFile.txt");
r.Candidates.Add(new Candidate) // Should error here
Console.WriteLine(r.Candidates[0].Name) // Should work
Вот что у меня есть для окурков моего класса:
public class Results {
private List<Precinct> precincts = new List<Precinct>();
public ReadOnlyCollection<Precinct> Precincts {
get { return this.precincts.AsReadOnly(); }
}
public Results() {}
public static Results ParseResultsFile(string filePath) { ... }
}
public class Precinct {
internal List<Contest> InternalContests { get; set; }
public ReadOnlyCollection<Contest> Contests {
get { return this.InternalContests.AsReadOnly(); }
}
public Precinct {
this.InternalContests = new List<Contest>();
}
}
Есть ли лучший способ сделать это?