2011-02-07 12 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

「すべてのタンク」を処理したい場合はどうすればよいですか?インテリセンスを得るだけの人たちの集まりを持たないというのは本当に不便ですか?サイトにタンクが1つしかない場合はどうなりますか?開発者はまだTank2を参照する必要がありますか? –

+0

サイトに1つのタンクしかない場合、サイトは 'obj = new Site(1)'を使用して構築され、intellisenseはTank1のみを表示します。サイトにタンクがない場合は、 'obj = new Site(0)'を使用して構築され、intellisenseはタンクを表示しません。下のAdam Robinsonの投稿を見ると、これはできないように見えます。 – jp2code

+0

コンパイル時間と実行時間? –

答えて

1

いいえ、これはできません。アセンブリをコンパイルするときは、すべてのクラスメンバを指定する必要があります。

あなたが興味を持っているのは、純粋にデバッグの容易さであれば、write your own debug visualizerです。

関連する問題