2012-12-07 3 views
0

컨트롤이있는 DLL을 만들었습니다. 내가 dll을 탐색 할 때 도구 상자에 컨트롤을 성공적으로 추가합니다. 문제는 내가 응용 프로그램을 실행할 때, 나는 다음과 같은 오류가 있다는 것입니다 : An unhandled exception of type 'System.StackOverflowException' occurred in xxx.dll'System.StackOverflowException'형식의 처리되지 않은 예외

디버거가 오류가 아래의 기능에 강조가는 방법 : 내가 아는 한

public ItemType this[int i] 
{ 
    get 
{ 
    return (ItemType)this[i]; 
} 
set 
{ 
    this[i] = value; 
} 
} 

이 오류가 발생 재귀 호출 때문에 어떻게 위의 내용을 다시 작성하거나이 문제를 해결할 수 있습니다. 당신은 당신의 클래스에 내부 목록을 사용합니다 가능한 한 빨리

감사

답변

2

코드의 도움을 바랍니다. 다음

private IList<ItemType> _list = new List<ItemType>(); 
    public ItemType this[int i] 
    { 
     get 
     { 
      return _list[i]; 
     } 
     set 
     { 
      _list[i] = value; 
     } 
    } 
+0

는 이제 복귀 _list의 개체의 인스턴스에 설정되지 않은 오브젝트 레퍼런스를 얻을 [I]; – user1885308

+0

목록을 먼저 초기화하십시오. 물론 샘플 코드에서 _list는 항상 null입니다. – Tobias

+0

실제로 항목 유형은 BaseItemCollection ._ 알려진 유형 = 새 유형 [] {typeof (ItemType)}; 그러면 재귀 함수를 어떻게 변경해야합니까? – user1885308

0

나는 문제 해결 :

public ItemType this[int i] 
{ 
    get 
    { 
     return (ItemType)((IList)this)[i]; 
    } 
    set 
    { 
     this[i] = value; 
    } 
}