У меня есть абстрактный класс с именем и свойством int. Я хочу управлять, потому что его нужно всегда сортировать.Остановить использование методов добавления и удаления в подклассе в абстрактном классе «Свойство списка»
public abstract partial class FindAndReplace : Form {
private readonly List<int> _columnsToSearch = new List<int>();
public List<int> ColumnsToSearch { get { return _columnsToSearch; } }
public void AddToColumnsToSearch(int intToAdd) {
_columnsToSearch.Add(intToAdd);
_columnsToSearch.Sort();
}
protected abstract void ColumnCheckBox_CheckChanged(object sender, EventArgs e);
...
}
Ниже представлен подкласс FindAndReplace. Я хочу заставить его использовать метод FindAndReplace AddToColumnsToSearch, но в подклассе метод добавления в ColumnsToSearch по-прежнему доступен. У меня создалось впечатление, что создание _columnsToSearch только для чтения и только предоставление метода get в ColumnsToSearch скрывает любые методы, такие как «Добавить и удалять» в ColumnsToSearch.
public partial class StepsTableFindAndReplace : FindAndReplace {
protected override void ColumnCheckBox_CheckChanged(object sender, EventArgs e) {
CheckBox cb = sender as CheckBox;
//get the columnIndex (removed the actual "get" code to keep simpler)
int colIndex = 0;
//can still use Add and Remove, want it to be
//AddToColumnsToSearch(colIndex) and RemoveFromColumnsToSearch(colIndex)
if (cb.Checked) ColumnsToSearch.Add(colIndex);
else ColumnsToSearch.Remove(colIndex);
}
...
}
Есть ли что-то, что я делаю неправильно/не понимаю?
Ответ на этот вопрос дал мне это решение (который не работает) ... C# get and set properties for a List Collection
Вы можете создать свой собственный класс, реализующий IList <>, и реализовать свои потребности при вызове метода Add –