我一直在考虑使用存储在数据库中的数据动态创建对象。我过去通过序列化每个对象的所有属性做了类似的事情,但那是几年前的事情,时代已经发生了变化。
我实际上喜欢以下问题的答案中概述的方法: 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
属性或字符串可能来自数据库?
有什么想法吗?
答案 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; }
}