从SQL数据动态创建对象

时间:2012-08-08 10:14:56

标签: c# inline

我一直在考虑使用存储在数据库中的数据动态创建对象。我过去通过序列化每个对象的所有属性做了类似的事情,但那是几年前的事情,时代已经发生了变化。

我实际上喜欢以下问题的答案中概述的方法: 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属性或字符串可能来自数据库?

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用LINQ to SQL?它占用了SQL数据库的所有表,并将它们转换为c#类。您可以通过DataContext对象访问所有数据,每个表都成为可以通过LINQ调用/编辑/更新的类。

阅读以下资料。网上有很多例子。

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

我希望这会有所帮助。

答案 1 :(得分:1)

假设您从DB读取值并输入如下字典:

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

(参见字典的类型:字符串,字符串年龄实际上是 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; }
}