항상 정렬해야하므로 int List 필드와 속성을 가진 추상 클래스가 있습니다.추상 클래스의 하위 클래스에서 Add 및 Remove 메서드 사용 중지 List 속성
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의 Add 메서드를 계속 사용할 수 있습니다. _columnsToSearch를 읽기 전용으로 만들고 ColumnsToSearch에서 get 메서드 만 제공하면 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 메서드를 호출 할 때 요구 사항을 구현할 수 있습니다. –