2011-02-07 3 views
0

클래스에 항목을 동적으로 추가하고 싶지만 다른 사람이 여기에서 내 구문을 도와야 할 수도 있습니다.다이내믹 클래스 아이템은 어떻게 만들 수 있습니까? C# WinForms

나는이 같은 ContainerTank 클래스를 가지고 :

class ContainerTank { 
    double radius; 
    public ContainerTank(int diameter) { 
    radius = (double)diameter/2; 
    } 
    public int Gauge {get;set;} 
    public double Volume { get { return (3.1415)*(radius*radius)*Gauge; } } 
} 

우리 사이트 각각 10 개 탱크 (물 탱크, 기름 탱크 등)의 터무니없는 값으로 아무도 아무것도 할 수 있습니다.

사이트 당 각 탱크의 데이터를 유지하기 위해 List<ContainerTank> tankList을 사용하는 클래스를 쉽게 만들 수 있지만, 사이트에 몇 개의 탱크가 있는지 지정하여 각 클래스를 초기화하는 방법을 찾고 싶습니다. 개별적으로.

예를 들어 탱크 2 개가있는 새 사이트를 만들면 Tank1과 Tank2 (또는 제로 인덱스를 사용하려면 Tank0과 Tank1)에 대한 맵을 갖게됩니다.

왜?

코드를 사용하는 개발자는 Visual Studio의 IntelliSense로 Tank1 및 Tank2 팝업을 볼 때 컬렉션을 사용하지 않고 컨트롤을 사용할 때 도움이됩니다.

주로 할 수 있는지, 어떻게 구현할 지 알고 싶습니다.

+1

"모든 탱크"를 처리하려면 어떻게해야합니까? 실제로 인텔리 센스를 얻으려는 사람들의 소장품을 가지고 있지 않다는 불편 함이 있습니까? 또한 한 사이트에 하나의 탱크 만 있다면? 개발자는 여전히 Tank2를 볼 수 있습니까? –

+0

사이트가 하나의 탱크 만 가지고 있다면 사이트는'obj = new Site (1)'을 사용하여 생성되고 intellisense는 Tank1 만 표시합니다. 사이트에 탱크가 없으면'obj = new Site (0)'을 사용하여 구성되며 intellisense는 탱크를 표시하지 않습니다. 그러나 아담 로빈슨 (Adam Robinson)의 게시물을 보면, 이렇게 할 수없는 것처럼 보입니다. – jp2code

+0

컴파일 시간 대 런타임? –

답변

1

아니요, 불가능합니다. 어셈블리를 컴파일 할 때 모든 클래스 멤버를 지정해야합니다.

관심있는 것이 디버깅의 용이성이라면 write your own debug visualizer 일 수 있습니다.

관련 문제