2016-12-12 3 views
-3

:コードで実行時にクラスのメンバーを作成する - 私はこのように定義された単純なクラス持つC#

public class StickColumns 
{ 
    public string wellname { get; set; } 
    public double WellLength { get; set; } 
} 

を、私はlist<double> perfdepthとしていくつかのデータを取得します。これがperfdepth1,perfdepth2,perfdepth3と仮定します。もちろん、このリストは、したがって、動的である、私は事前に私のクラス定義を変更するには知っているのwouldnt:

public class StickColumns 
{ 
    public string wellname { get; set; } 
    public double WellLength { get; set; } 
    public double perfdepth1 { get; set; } 
    public double perfdepth2 { get; set; } 
    public double perfdepth3 { get; set; } 
} 

これらの新しいメンバーは、実行時に作成することができますか? これが必要な理由は、WPFのデータバインディングが原因です。最終的に私は "ポイントシリーズ"を表示する必要があります。 1シリーズとしてのPerfdepth1、別のシリーズとしてのperfdepth2、すなわち、Perfdepthの動的数。

もっと簡単な方法があれば、私はすべて耳にします!

+4

これは確かに可能ですが、これはこれを行うのがはるかに難しい方法です。私は別のアプローチを提案します、おそらくリストを使用して? – FailedUnitTest

+0

http://stackoverflow.com/questions/15819720/dynamically-add-c-sharp-properties-at-runtimeを見ましたか? – Johnny

+1

「ExpandoObject」をご覧くださいhttps://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx –

答えて

3

あなただけExpandoObjectと動的な型を使用する場合があります。..

dynamic stickColumns = new ExpandoObject(); 
stickColumns.wellName = "Something"; 
stickColumns.perfdepth1 = "Something Else"; 

それはあなたがランタイムエラーなどで終わるわけないとしてそれはその欠点を持っている...しかし、それはこのタイプのために有用であることができますシナリオの

+0

thnxに置き換えることができます。これは観測可能なコレクションで使用できますか? – user7157732

+0

それはobservablecollection またはオブジェクトですが、データはスティック列に含まれています。私はそれがうまくいくと思います。 – gmn

+0

バディ私はこれをどのように使用するか混乱しています。あなたの例では、 "perfdepth1"のメンバーが既にクラスに存在すると仮定していますか?あなたは値を入力していますか? – user7157732

関連する問題