2

データベースに格納されたデータを使用してオブジェクトを動的に作成することを考えていました。私は過去に各オブジェクトのすべてのプロパティをシリアル化することで同様のことを行いましたが、それは数年前のことであり、時代は変わりました。

私は実際、次の質問への回答で概説されている方法が好きです: How to do dynamic object creation and method invocation in .NET 3.5

これをさらに一歩進めて、保存されたデータを使用してオブジェクトのすべてのプロパティを設定できるかどうか疑問に思っています。

明らかに、各プロパティを個別に設定できます IE: プロパティまたは文字列がデータベースに由来する場所 など、よりインラインで何かを行うことは可能でしょうか??
Person p = new Person();
p.Name = "Me";
p.Age = 31;

Person p = new Person() { Name = "Me", Age = 31 };Name = "Me", Age = 31

何かご意見は?

4

2 に答える 2

2

LINQ to SQLの使用について考えたことはありますか?SQLデータベースのすべてのテーブルを取得し、それらをc#クラスに変換します。DataContextオブジェクトを介してすべてのデータにアクセスすると、各テーブルはLINQを介して呼び出し/編集/更新できるクラスになります。

次の資料を読んでください。ネット上にはたくさんの例があります。

http://msdn.microsoft.com/en-us/library/bb425822.aspx

これがお役に立てば幸いです。

于 2012-08-08T10:30:54.380 に答える
1

DB から値を読み取り、次のような辞書に入れると仮定します。

Dictionary<string, string> parameters = new Dictionary<string, string>()
{
    {"Name","Scott"},
    {"Age","30"}
};

(辞書の type: string, stringを参照してください。ただし、Ageは実際にはintです)

オブジェクトを次のように動的に作成できます

var obj = Activator.CreateInstance(Type.GetType("SO.Form2+Person"));

foreach (var pi in obj.GetType().GetProperties())
{
    pi.SetValue(obj, Convert.ChangeType(parameters[pi.Name], pi.PropertyType));
}

--

public class Person
{
    public string Name { set; get; }
    public int  Age { set; get; }
}
于 2012-08-08T11:10:44.033 に答える