2011-07-20 16 views
1

私は動的にクラスを作成したいと思っています。動的にクラスを作成するには#:.net。

メンバ変数の数が動的に与えられているので、私は私が「」のようなのObservableCollectionけど、私はクラスを割り当てたい、このように

string element = "element"; 
string str = String.Empty; 
for (int i = 0; i < elementsCount; i++) 
{ 
    str = String.Concat(str, element + i, "=String.Empty", ","); 
    if (i == elementsCount - 1) 
     str = String.Concat(str, element + i, "=String.Empty"); 
} 
string s = "new{" + str + "}"; 
var a=s; 

を試してみました 、匿名メソッドを使用してみましたこれを行うことができませんでした。

これらの2つの方法はありますか? これは私が推測する正しい方法ではありません。

+0

は "私は動的にC#.NETでクラスを作成します。"いいえ、あなたはしません。あなたが何をしているのか分からない限り。明らかに、あなたはしません。 – Euphoric

答えて

3

あなたの他のコードのどれもが、コンパイル時にそれに話をすることができなくなりますので、その場でクラスを作成するために非常に有用なアイデアではありません。ここでの目的は何ですか?オプション:

  • 辞書とdynamicのAPI
  • これはデータバインディングのためであれば、ICustomTypeDescriptorを実装し、実行時
  • で特性を提供するの両方を持っている ExpandoObjectを使用し、4.0に名前
  • をキーとするデータを返すためにDictionary<string,object>を使用例えば

string element = "element"; 
    string str = String.Empty; 
    int elementsCount = 20; 
    IDictionary<string,object> obj = new ExpandoObject(); 
    for (int i = 0; i < elementsCount; i++) 
    { 
     obj[element + i] = "value " + i; 
    } 
    dynamic viaDynamic = obj; 
    string val0 = viaDynamic.element0; // = "value 0" 

しかし、重要なことに、静的使用のためのAPIはまだIDictionary<string,object>です。

0

クラス(型)または既存の型のインスタンスを作成しますか?

するSystem.Reflectionで後者の一見のため

activator class

は、.NET 4を使用している場合は、あなたはそのためにリフレクションを使用する必要があり、かつhere'うC#

関連する問題