1

List オブジェクトがあります。コードでは、新しいクラスを宣言したいと思います。動的に生成されるその属性はすべて List オブジェクトから取得されます。これを行う方法はありますか?

例: がありList<string> lstStr= "apple, pear, banana";、コードで新しいクラスを生成したい:

Class Foo{
   string apple;
   string pear;
   string banana;
}
4

5 に答える 5

0

Dictionary代わりに次のような別のコレクションを使用します。

Dictionary<String, String> Foo = lstStr
                           .Distinct()
                           .ToDictionary(f => f, f => default(String));
// now you can get/set the elements in the following way:
String banana = Foo["banana"];
Foo["apple"] = "some apple";
于 2012-09-05T22:56:28.910 に答える
0

コメントで、ここでの最終目標はデータを にバインドすることであると述べているので、DataGridを使用することをお勧めしますDataTable。空白のスレートを作成し、(任意のプリミティブ型の) 列を追加してから、任意の数の行にすべて同じ列スキーマを設定できます。DataTableさらに、をDataGrid;に簡単にバインドできます。それらは連携するように設計されています。

于 2012-09-06T00:56:44.980 に答える
0

クラスが本当に必要な場合は、codedom を使用して実行できる可能性があります。文字列をクラス定義文字列に解析してそこから生成するか、文字列のリストを使用してループしながらプロパティを作成します。

ここに基本へのガイドがあります。

于 2012-09-05T23:01:12.710 に答える
0

C# 4 以降を使用している場合は、ダイナミクス、特に ExpandoObject を使用してこれを行うことができます。

    var x = new ExpandoObject() as IDictionary<string, Object>;
foreach (var prop in lstStr)
{
     x.Add(prop, "");
}
于 2012-09-05T23:01:27.600 に答える
0

あなたが使用することができます

public static List<Foo> GetFooList() { .... }

またはリストオブジェクトから拡張しますが、多くのメソッドは仮想であるため、すべてのメソッドで終わるとは限りません。

public class FooList:List<Foo> { .... //add more } 

そしてそれを使用して

public static FooList GetFooList() { .... } 

リンク: C# Generics: List<Object> または new class extends List <Object>

于 2012-09-05T23:45:15.083 に答える