List <T>에서 파생 된 클래스의 추가 내용을 어떻게 확인합니까?

로버트 리처드슨

우리는 코드를 C ++에서 C #으로 변환하는 프로젝트의 시작 단계에 있습니다. 동료가 List<T>구성원을 포함하는 목록 클래스를 제안했습니다 . 그는 List<T>항목을 목록에 추가하기 전에 몇 가지 유효성 검사를 수행해야하기 때문에 파생되지 않았습니다 .

잠시 동안 사용자 지정 목록을 파생하는 CollectionBase것이 도움이 될 것이라고 생각 했지만 CollectionBase이제는 제네릭 클래스가 있으므로 쓸모가 없습니다. 여기에서 찾은 한 게시물은 비슷한 질문을 가진 사용자가 List <T>에서 파생되어 파생 클래스에서 유효성 검사를 수행 해야 한다고 말했지만 그 방법은 언급하지 않았습니다.

예를 들어 정수만 포함하는 목록을 원한다고 가정 해 보겠습니다. 정수를 목록에 추가하기 전에 짝수인지 확인하는 검사를 어떻게 구현합니까?

dcastro

구현해야합니다 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Redshift에서 내 스키마가 생성 된 위치를 어떻게 확인합니까?

분류에서Dev

다른 클래스에서 생성 된 ImageIcon 배열의 내용을 어떻게 되돌릴 수 있습니까?

분류에서Dev

부모 클래스에 C ++의 기본 생성자가없는 경우 상속 된 클래스에서 생성자를 어떻게 사용합니까?

분류에서Dev

내가 어떻게 JRuby에서의 컴파일 된 자바 클래스를로드 할 수 있습니까?

분류에서Dev

STI를 사용하여 파생 클래스에 열을 어떻게 추가합니까?

분류에서Dev

QMainWindow에서 파생 된 클래스의 HWND를 어떻게 얻을 수 있습니까?

분류에서Dev

다른 클래스에서 상속 된 파이썬 클래스의 초기 정의에 어떻게 추가 할 수 있습니까?

분류에서Dev

함수가 정의 된 모듈을 어떻게 확인합니까? 파이썬

분류에서Dev

파생 클래스에 추가되는 항목 유형을 제한하려면 어떻게합니까?

분류에서Dev

명령 출력에서 인용 된 문자열의 내용을 어떻게 추출합니까?

분류에서Dev

추상 기본 클래스의 파생 클래스에 대한 asp.net Htmlhelper 확장을 어떻게 정의 할 수 있습니까?

분류에서Dev

Mac OS X의 클래스 경로에 .jar 파일을 어떻게 추가합니까?

분류에서Dev

기본 클래스에서 파생 된 모든 유형의 컴파일 타임 목록을 유지하려면 어떻게해야합니까?

분류에서Dev

생성 된 소스 파일을 소스 패키지에 추가하도록 netbeans gradle 플러그인에 어떻게 지시합니까?

분류에서Dev

동일한 모듈 내의 다른 클래스에서 클래스가 사용되었는지 어떻게 확인합니까?

분류에서Dev

파이썬 3에서 내 클래스 obj와 함께 'in'을 사용하는 방법을 추가하려면 어떻게해야합니까?

분류에서Dev

Domino Designer에서 Java 코드에 대해 생성 된 클래스 파일을 어떻게 볼 수 있습니까?

분류에서Dev

생성 된 .Net 클래스 또는 원래 XSD의 요소 / 속성 이름을 기반으로 xml 파일에서 값을 문자열로 추출하려면 어떻게해야합니까?

분류에서Dev

설치된 Ubuntu 시스템에이 추가 파티션을 어떻게 추가합니까?

분류에서Dev

파생 클래스에서 내부 클래스 생성자에 어떻게 액세스합니까?

분류에서Dev

리플렉션을 사용하여 런타임에 인스턴스화 된 List <T>의 파생 클래스에 속성 설정

분류에서Dev

클래스 B에서 다른 클래스 A의 NSArray에 값을 어떻게 추가 할 수 있습니까?

분류에서Dev

CSS의 클래스 내에 클래스를 추가하려면 어떻게해야합니까?

분류에서Dev

dart에서 추상 클래스로 상속을 어떻게 수행합니까? 오류 : Superclass SpanishData에 인수가없는 생성자가 없습니다.

분류에서Dev

두 개 이상의 구 / 단어가 포함 된 파일을 어떻게 확인합니까?

분류에서Dev

빌드 중에 생성 된 파일을 include 디렉토리에 어떻게 추가합니까?

분류에서Dev

파생 클래스가 내부 클래스의 친구 인 부모 클래스의 보호 된 내부 클래스의 전용 메서드에 액세스 할 수 있습니까?

분류에서Dev

인스턴스 클래스가 클래스 내의 변수와 같은지 어떻게 확인합니까?

분류에서Dev

OS X의 명령 줄에서 VLC 재생 목록에 파일을 추가하려면 어떻게합니까?

Related 관련 기사

  1. 1

    Redshift에서 내 스키마가 생성 된 위치를 어떻게 확인합니까?

  2. 2

    다른 클래스에서 생성 된 ImageIcon 배열의 내용을 어떻게 되돌릴 수 있습니까?

  3. 3

    부모 클래스에 C ++의 기본 생성자가없는 경우 상속 된 클래스에서 생성자를 어떻게 사용합니까?

  4. 4

    내가 어떻게 JRuby에서의 컴파일 된 자바 클래스를로드 할 수 있습니까?

  5. 5

    STI를 사용하여 파생 클래스에 열을 어떻게 추가합니까?

  6. 6

    QMainWindow에서 파생 된 클래스의 HWND를 어떻게 얻을 수 있습니까?

  7. 7

    다른 클래스에서 상속 된 파이썬 클래스의 초기 정의에 어떻게 추가 할 수 있습니까?

  8. 8

    함수가 정의 된 모듈을 어떻게 확인합니까? 파이썬

  9. 9

    파생 클래스에 추가되는 항목 유형을 제한하려면 어떻게합니까?

  10. 10

    명령 출력에서 인용 된 문자열의 내용을 어떻게 추출합니까?

  11. 11

    추상 기본 클래스의 파생 클래스에 대한 asp.net Htmlhelper 확장을 어떻게 정의 할 수 있습니까?

  12. 12

    Mac OS X의 클래스 경로에 .jar 파일을 어떻게 추가합니까?

  13. 13

    기본 클래스에서 파생 된 모든 유형의 컴파일 타임 목록을 유지하려면 어떻게해야합니까?

  14. 14

    생성 된 소스 파일을 소스 패키지에 추가하도록 netbeans gradle 플러그인에 어떻게 지시합니까?

  15. 15

    동일한 모듈 내의 다른 클래스에서 클래스가 사용되었는지 어떻게 확인합니까?

  16. 16

    파이썬 3에서 내 클래스 obj와 함께 'in'을 사용하는 방법을 추가하려면 어떻게해야합니까?

  17. 17

    Domino Designer에서 Java 코드에 대해 생성 된 클래스 파일을 어떻게 볼 수 있습니까?

  18. 18

    생성 된 .Net 클래스 또는 원래 XSD의 요소 / 속성 이름을 기반으로 xml 파일에서 값을 문자열로 추출하려면 어떻게해야합니까?

  19. 19

    설치된 Ubuntu 시스템에이 추가 파티션을 어떻게 추가합니까?

  20. 20

    파생 클래스에서 내부 클래스 생성자에 어떻게 액세스합니까?

  21. 21

    리플렉션을 사용하여 런타임에 인스턴스화 된 List <T>의 파생 클래스에 속성 설정

  22. 22

    클래스 B에서 다른 클래스 A의 NSArray에 값을 어떻게 추가 할 수 있습니까?

  23. 23

    CSS의 클래스 내에 클래스를 추가하려면 어떻게해야합니까?

  24. 24

    dart에서 추상 클래스로 상속을 어떻게 수행합니까? 오류 : Superclass SpanishData에 인수가없는 생성자가 없습니다.

  25. 25

    두 개 이상의 구 / 단어가 포함 된 파일을 어떻게 확인합니까?

  26. 26

    빌드 중에 생성 된 파일을 include 디렉토리에 어떻게 추가합니까?

  27. 27

    파생 클래스가 내부 클래스의 친구 인 부모 클래스의 보호 된 내부 클래스의 전용 메서드에 액세스 할 수 있습니까?

  28. 28

    인스턴스 클래스가 클래스 내의 변수와 같은지 어떻게 확인합니까?

  29. 29

    OS X의 명령 줄에서 VLC 재생 목록에 파일을 추가하려면 어떻게합니까?

뜨겁다태그

보관