우리는 코드를 C ++에서 C #으로 변환하는 프로젝트의 시작 단계에 있습니다. 동료가 List<T>
구성원을 포함하는 목록 클래스를 제안했습니다 . 그는 List<T>
항목을 목록에 추가하기 전에 몇 가지 유효성 검사를 수행해야하기 때문에 파생되지 않았습니다 .
잠시 동안 사용자 지정 목록을 파생하는 CollectionBase
것이 도움이 될 것이라고 생각 했지만 CollectionBase
이제는 제네릭 클래스가 있으므로 쓸모가 없습니다. 여기에서 찾은 한 게시물은 비슷한 질문을 가진 사용자가 List <T
>에서 파생되어 파생 클래스에서 유효성 검사를 수행 해야 한다고 말했지만 그 방법은 언급하지 않았습니다.
예를 들어 정수만 포함하는 목록을 원한다고 가정 해 보겠습니다. 정수를 목록에 추가하기 전에 짝수인지 확인하는 검사를 어떻게 구현합니까?
구현해야합니다 IList<T>
. List<T>
과 같은 메서드 Add
는 재정의 할 수 없기 때문에 파생하는 것만으로는 충분 하지 않습니다. 상속을 포기하고 기본 클래스 구현을 숨길 수는 있지만 그건 ... 더럽습니다. 그리고 안전하지 않습니다.
따라서 구성을 구현 IList<T>
하고 사용하십시오.
public class EvenIntsList : IList<int>
{
private readonly IList<int> _list;
public EvenIntsList()
{
_list = new List<int>();
}
public void Add(int item)
{
if(item % 2 == 0)
_list.Add(item);
else
throw new ArgumentException("This list only allows even integers.", "item");
}
}
또한 IList<T>
다음과 같은 다른 메서드에 대한 통과 구현을 제공해야합니다 .
public IEnumerable<int> GetEnumerable()
{
return _list.GetEnumerable();
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다