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"}
};

(看字典的类型:string, stringage其实是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 回答